add new module

This commit is contained in:
sonal arora
2020-07-21 10:09:46 +00:00
parent 800e7fdceb
commit c0d10e3fbe
1063 changed files with 243750 additions and 5 deletions

47
hr_custody/README.rst Normal file
View File

@@ -0,0 +1,47 @@
Open HRMS Custody Management
============================
Functionality to give and track the assets of a company to employees.
- Creates a new menu item Custody Management under Employees
- Can create custody contract with an employee
- Can take the report of custody
Depends
=======
[hr, mail, hr_employee_updation] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
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)
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developers: Avinash Nk <odoo@cybrosys.com>
Jesni Banu <odoo@cybrosys.com>
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

24
hr_custody/__init__.py Normal file
View File

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2019-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Authors: Avinash Nk, Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models
from . import reports

View File

@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of Open HRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2019-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Authors: Avinash Nk, Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Open HRMS Custody',
'version': '13.0.1.0.0',
'summary': """Manage the company properties when it is in the custody of an employee""",
'description': 'Manage the company properties when it is in the custody of an employee',
'category': 'Generic Modules/Human Resources',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.openhrms.com",
'depends': ['hr', 'mail', 'hr_employee_updation', 'product'],
'data': [
'security/ir.model.access.csv',
'security/custody_security.xml',
'views/wizard_reason_view.xml',
'views/custody_view.xml',
'views/hr_custody_notification.xml',
'views/hr_employee_view.xml',
'views/notification_mail.xml',
'reports/custody_report.xml'
],
'demo': ['data/demo_data.xml'],
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="property_one" model="custody.property">
<field name="name">Laptop</field>
</record>
<record id="property_two" model="custody.property">
<field name="name">Seminar hall</field>
</record>
<record id="property_three" model="custody.property">
<field name="name">Car</field>
</record>
<record id="employee_custody" model="hr.employee">
<field name="name">Juliet </field>
<field name="job_title">Odoo Developer</field>
<field name="work_location">Building 3, Fifth Floor</field>
<field name="work_phone">(956)-3852-7863</field>
<field name="work_email">juliet123@example.com</field>
<field name="image_1920" type="base64" file="hr_custody/static/images/hr_custody_employee.jpg"/>
</record>
<record id="custody_demo_one" model="hr.custody">
<field name="custody_name" ref="property_one"/>
<field name="employee" ref="employee_custody"/>
<field name="purpose">Projectwork</field>
<field name="date_request">2020-03-02</field>
<field name="return_date">2020-03-02</field>
<field name="state">draft</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,6 @@
## Module hr_custody
#### 01.03.2019
#### Version 13.0.1.0.0
##### ADD
- Initial commit for Open Hrms Project

691
hr_custody/i18n/ar_001.po Normal file
View File

@@ -0,0 +1,691 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_custody
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-12 06:59+0000\n"
"PO-Revision-Date: 2020-02-12 06:59+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_custody
#: model:mail.template,body_html:hr_custody.custody_email_notification_template
msgid ""
"\n"
" \n"
" <p>Dear ${(object.employee.name)},<br/><br/>\n"
" You are in possession of the company asset\n"
" <strong>\"${(object.custody_name.name)}\"</strong>\n"
" since <strong>${(object.return_date)}.</strong><br/><br/>\n"
" Please kindly return the property as soon as possible.<br/><br/></p>\n"
" Regards,<br/><br/>\n"
" ${(object.company_id.name)}\n"
" "
msgstr ""
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_employee__custody_count
msgid "# Custody"
msgstr "عهدة #"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_employee__equipment_count
msgid "# Equipments"
msgstr "المعدات #"
#. module: hr_custody
#: code:addons/hr_custody/models/custody.py:0
#, python-format
msgid "/web#id=%s&view_type=form&model=hr.custody&menu_id="
msgstr ""
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_needaction
msgid "Action Needed"
msgstr "الإجراءات اللازمة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_ids
msgid "Activities"
msgstr "أنشطة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "نشاط استثناء الديكور"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_state
msgid "Activity State"
msgstr "حالة النشاط"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Approve"
msgstr "يوافق"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__hr_custody__state__approved
#: model:ir.model.fields.selection,name:hr_custody.selection__report_custody__state__approved
msgid "Approved"
msgstr "وافق"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__asset_true
msgid "Asset Exists"
msgstr "الأصول موجود"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__asset_id
#: model:ir.model.fields.selection,name:hr_custody.selection__custody_property__property_selection__asset
msgid "Assets"
msgstr "الأصول"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_attachment_count
msgid "Attachment Count"
msgstr "عدد المرفقات"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_reason_form
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_return_date_form
msgid "Cancel"
msgstr "إلغاء"
#. module: hr_custody
#: model_terms:ir.actions.act_window,help:hr_custody.action_hr_custody
#: model_terms:ir.actions.act_window,help:hr_custody.action_hr_property
msgid "Click to Create a New Record."
msgstr ".انقر لإنشاء سجل جديد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__name
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__name
msgid "Code"
msgstr "الشفرة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__company_id
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__company_id
msgid "Company"
msgstr "شركة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__create_uid
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__create_uid
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__create_uid
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__create_uid
msgid "Created by"
msgstr "انشأ من قبل"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__create_date
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__create_date
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__create_date
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__create_date
msgid "Created on"
msgstr "تم إنشاؤها على"
#. module: hr_custody
#: code:addons/hr_custody/models/hr_employee.py:0
#: code:addons/hr_custody/models/hr_employee.py:0
#: model:ir.actions.act_window,name:hr_custody.action_hr_custody
#: model:ir.ui.menu,name:hr_custody.hr_custody_main_menu
#: model_terms:ir.ui.view,arch_db:hr_custody.custody_hr_employee_inherit_form_view
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_search_view
#, python-format
msgid "Custody"
msgstr "عهدة"
#. module: hr_custody
#: model:ir.actions.act_window,name:hr_custody.action_report_custody
#: model:ir.model,name:hr_custody.model_report_custody
#: model:ir.ui.menu,name:hr_custody.menu_custody_analysis
msgid "Custody Analysis"
msgstr "تحليل الحراسة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_search_view
msgid "Custody Name"
msgstr "اسم الحراسة"
#. module: hr_custody
#: model:ir.actions.act_window,name:hr_custody.wizard_return_date_act
#: model:ir.ui.menu,name:hr_custody.hr_custody_menu
msgid "Custody Request"
msgstr "طلب حضانة"
#. module: hr_custody
#: code:addons/hr_custody/models/custody.py:0
#: code:addons/hr_custody/models/custody.py:0
#: code:addons/hr_custody/models/custody.py:0
#, python-format
msgid "Custody is not available now"
msgstr "الحراسة غير متوفرة الآن"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__desc
#: model_terms:ir.ui.view,arch_db:hr_custody.custody_custody_form_view
msgid "Description"
msgstr "وصف"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__display_name
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__display_name
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__display_name
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__display_name
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__display_name
msgid "Display Name"
msgstr "اسم العرض"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__hr_custody__state__draft
#: model:ir.model.fields.selection,name:hr_custody.selection__report_custody__state__draft
msgid "Draft"
msgstr "مشروع"
#. module: hr_custody
#: model:ir.model,name:hr_custody.model_hr_employee
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__employee
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__employee
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_search_view
msgid "Employee"
msgstr "الموظف"
#. module: hr_custody
#: code:addons/hr_custody/models/hr_employee.py:0
#: code:addons/hr_custody/models/hr_employee.py:0
#: model_terms:ir.ui.view,arch_db:hr_custody.custody_custody_form_view
#: model_terms:ir.ui.view,arch_db:hr_custody.custody_hr_employee_inherit_form_view
#, python-format
msgid "Equipments"
msgstr "المعدات"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_follower_ids
msgid "Followers"
msgstr "متابعون"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_channel_ids
msgid "Followers (Channels)"
msgstr "(المتابعون (القنوات"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_partner_ids
msgid "Followers (Partners)"
msgstr "(المتابعون (الشركاء"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_search_view
msgid "Group By"
msgstr "مجموعة من"
#. module: hr_custody
#: model:ir.actions.server,name:hr_custody.hr_custody_data_reminders_ir_actions_server
#: model:ir.cron,cron_name:hr_custody.hr_custody_data_reminders
#: model:ir.cron,name:hr_custody.hr_custody_data_reminders
msgid "HR Custody Return Notification"
msgstr "الموارد البشرية إشعار عودة الحفظ"
#. module: hr_custody
#: code:addons/hr_custody/models/custody.py:0
#, python-format
msgid ""
"Hi %s,<br>As per the %s you took %s on %s for the reason of %s. S0 here we "
"remind you that you have to return that on or before %s. Otherwise, you can "
"renew the reference number(%s) by extending the return date through "
"following link.<br> <div style = \"text-align: center; margin-top: "
"16px;\"><a href = \"%s\"style = \"padding: 5px 10px; font-size: 12px; line-"
"height: 18px; color: #FFFFFF; border-color:#875A7B;text-decoration: none; "
"display: inline-block; margin-bottom: 0px; font-weight: 400;text-align: "
"center; vertical-align: middle; cursor: pointer; white-space: nowrap; "
"background-image: none; background-color: #875A7B; border: 1px solid "
"#875A7B; border-radius:3px;\">Renew %s</a></div>"
msgstr ""
#. module: hr_custody
#: model:ir.model,name:hr_custody.model_hr_custody
msgid "Hr Custody Management"
msgstr "إدارة حراسة الموارد البشرية"
#. module: hr_custody
#: model:ir.model,name:hr_custody.model_wizard_return_date
msgid "Hr Custody Name"
msgstr "اسم حراسة الموارد البشرية"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__id
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__id
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__id
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__id
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__id
msgid "ID"
msgstr "هوية شخصية"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_exception_icon
msgid "Icon"
msgstr "أيقونة"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ".أيقونة للإشارة إلى نشاط استثناء"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_needaction
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_unread
msgid "If checked, new messages require your attention."
msgstr ".إذا تم تحديد ذلك ، فإن الرسائل الجديدة تتطلب اهتمامك"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_has_error
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ".إذا تم التحقق ، فبعض الرسائل بها خطأ في التسليم"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__image
msgid "Image"
msgstr "صورة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_is_follower
msgid "Is Follower"
msgstr "هو تابع"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property____last_update
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody____last_update
#: model:ir.model.fields,field_description:hr_custody.field_report_custody____last_update
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason____last_update
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date____last_update
msgid "Last Modified on"
msgstr "آخر تعديل في"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__write_uid
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__write_uid
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__write_uid
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__write_uid
msgid "Last Updated by"
msgstr "آخر تحديث بواسطة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__write_date
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__write_date
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__write_date
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__write_date
msgid "Last Updated on"
msgstr "آخر تحديث في"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__mail_send
msgid "Mail Send"
msgstr "إرسال البريد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_main_attachment_id
msgid "Main Attachment"
msgstr "المرفق الرئيسي"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__image_medium
msgid "Medium-sized image"
msgstr "صورة متوسطة الحجم"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_custody_property__image_medium
msgid ""
"Medium-sized image of this provider. It is automatically resized as a "
"128x128px image, with aspect ratio preserved. Use this field in form views "
"or some kanban views."
msgstr ""
"صورة متوسطة الحجم لهذا المزود. يتم تغيير حجمها تلقائيًا ك"
"صورة بحجم 128 × 128 بكسل ، مع الحفاظ على نسبة العرض إلى الارتفاع. استخدم هذا الحقل في طرق عرض النماذج"
"أو بعض وجهات النظر kanban"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_has_error
msgid "Message Delivery error"
msgstr "خطأ في تسليم الرسالة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_ids
msgid "Messages"
msgstr "رسائل"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.custody_custody_form_view
msgid "Name"
msgstr "اسم"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "آخر نشاط الموعد النهائي"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_summary
msgid "Next Activity Summary"
msgstr "ملخص النشاط التالي"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_type_id
msgid "Next Activity Type"
msgstr "نوع النشاط التالي"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__custody_property__property_selection__empty
msgid "No Connection"
msgstr "لا يوجد اتصال"
#. module: hr_custody
#: code:addons/hr_custody/models/custody.py:0
#, python-format
msgid "No asset module found. Kindly install the asset module."
msgstr ".لم يتم العثور على وحدة الأصول. يرجى تثبيت وحدة الأصول"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__notes
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Notes"
msgstr "ملاحظات"
#. module: hr_custody
#: model:mail.template,subject:hr_custody.custody_email_notification_template
msgid "Notification to return company asset-${object.custody_name.name}"
msgstr " ${object.custody_name.name}-إشعار للعودة أصول الشركة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_needaction_counter
msgid "Number of Actions"
msgstr "عدد الإجراءات"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_has_error_counter
msgid "Number of errors"
msgstr "عدد الاخطاء"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr "عدد الرسائل التي تتطلب إجراء"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "عدد الرسائل مع خطأ التسليم"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__message_unread_counter
msgid "Number of unread messages"
msgstr "عدد الرسائل غير المقروءة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_reason_form
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_return_date_form
msgid "Proceed"
msgstr "تقدم"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__product_id
msgid "Product"
msgstr "المنتج"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__custody_property__property_selection__product
msgid "Products"
msgstr "منتجات"
#. module: hr_custody
#: model:ir.actions.act_window,name:hr_custody.action_hr_property
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__custody_name
#: model:ir.ui.menu,name:hr_custody.hr_property_menu
msgid "Property"
msgstr "خاصية"
#. module: hr_custody
#: model:ir.model,name:hr_custody.model_custody_property
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__name
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__custody_name
msgid "Property Name"
msgstr "اسم الخاصية"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__property_selection
msgid "Property from"
msgstr "الملكية من"
#. module: hr_custody
#: code:addons/hr_custody/models/custody.py:0
#, python-format
msgid "REMINDER On %s"
msgstr "%s تذكير في"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__purpose
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__purpose
#: model:ir.model.fields,field_description:hr_custody.field_wizard_reason__reason
msgid "Reason"
msgstr "السبب"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Refuse"
msgstr "رفض"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__hr_custody__state__rejected
#: model:ir.model.fields.selection,name:hr_custody.selection__report_custody__state__rejected
msgid "Refused"
msgstr "رفض"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__rejected_reason
msgid "Rejected Reason"
msgstr "رفض السبب"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Renew"
msgstr "جدد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__renew_reject
msgid "Renew Reject"
msgstr "تجديد رفض"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__renew_rejected_reason
msgid "Renew Rejected Reason"
msgstr "تجديد رفض السبب"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__renew_return_date
msgid "Renew Return Date"
msgstr "تجديد تاريخ العودة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Renewal Approval"
msgstr "موافقة التجديد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_wizard_return_date__returned_date
msgid "Renewal Date"
msgstr "تاريخ التجديد"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_return_date_form
msgid "Renewal Request"
msgstr "طلب تجديد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__renew_date
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__renew_date
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__renew_return_date
msgid "Renewal Return Date"
msgstr "تاريخ العودة التجديد"
#. module: hr_custody
#: model:ir.ui.menu,name:hr_custody.menu_custody_report
msgid "Report"
msgstr "نقل"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__date_request
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__date_request
msgid "Requested Date"
msgstr "التاريخ المطلوب"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__activity_user_id
msgid "Responsible User"
msgstr "المستخدم المسؤول"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Return"
msgstr "إرجاع"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__return_date
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__return_date
msgid "Return Date"
msgstr "تاريخ العودة"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__hr_custody__state__returned
#: model:ir.model.fields.selection,name:hr_custody.selection__report_custody__state__returned
msgid "Returned"
msgstr "عاد"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_has_sms_error
msgid "SMS Delivery error"
msgstr "خطأ في تسليم الرسائل القصيرة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Send For Approval"
msgstr "إرسال للموافقة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Send Mail"
msgstr "ارسل بريد"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_form_view
msgid "Set to Draft"
msgstr "تعيين إلى مشروع"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_custody_property__image_small
msgid "Small-sized image"
msgstr "صورة صغيرة الحجم"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_custody_property__image_small
msgid ""
"Small-sized image of this provider. It is automatically resized as a 64x64px"
" image, with aspect ratio preserved. Use this field anywhere a small image "
"is required."
msgstr ""
"صورة صغيرة الحجم لهذا المزود. يتم تغيير حجمها تلقائيًا على أنها 64 × 64 بكسل"
"الصورة ، مع الحفاظ على نسبة العرض إلى الارتفاع. استخدم هذا الحقل في أي مكان صورة صغيرة"
"مطلوب."
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__state
#: model:ir.model.fields,field_description:hr_custody.field_report_custody__state
#: model_terms:ir.ui.view,arch_db:hr_custody.hr_custody_search_view
msgid "Status"
msgstr "الحالة"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
"الحالة على أساس الأنشطة\n"
"المتأخرة: تاريخ الاستحقاق مر\n"
"اليوم: تاريخ النشاط هو اليوم\n"
"المخطط: الأنشطة المستقبلية."
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_custody_property__image
msgid ""
"This field holds the image used for this provider, limited to 1024x1024px"
msgstr ""
"يحتفظ هذا الحقل بالصورة المستخدمة لهذا الموفر ، مقيدًا بدقة 1024 × 1024 بكسل"
#. module: hr_custody
#: model_terms:ir.actions.act_window,help:hr_custody.action_report_custody
msgid "This report allows you to analyse all Custody Requests."
msgstr ".يسمح لك هذا التقرير بتحليل جميع طلبات الحراسة"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.view_report_custody
msgid "Ticket Analysis"
msgstr "تحليل التذاكر"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ".نوع نشاط الاستثناء في السجل"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_unread
msgid "Unread Messages"
msgstr "رسائل غير مقروءة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__message_unread_counter
msgid "Unread Messages Counter"
msgstr "عداد الرسائل غير المقروءة"
#. module: hr_custody
#: model:ir.actions.act_window,name:hr_custody.wizard_reason_act
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_reason_form
msgid "Update Reason"
msgstr "تحديث السبب"
#. module: hr_custody
#: model:ir.model.fields.selection,name:hr_custody.selection__hr_custody__state__to_approve
#: model:ir.model.fields.selection,name:hr_custody.selection__report_custody__state__to_approve
msgid "Waiting For Approval"
msgstr "بانتظار الموافقة"
#. module: hr_custody
#: model:ir.model.fields,field_description:hr_custody.field_hr_custody__website_message_ids
msgid "Website Messages"
msgstr "رسائل الموقع"
#. module: hr_custody
#: model:ir.model.fields,help:hr_custody.field_hr_custody__website_message_ids
msgid "Website communication history"
msgstr "سجل اتصالات الموقع"
#. module: hr_custody
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_reason_form
#: model_terms:ir.ui.view,arch_db:hr_custody.wizard_return_date_form
msgid "or"
msgstr "أو"
#. module: hr_custody
#: model:ir.model,name:hr_custody.model_wizard_reason
msgid "wizard.reason"
msgstr ""

View File

@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import custody
from . import hr_employee
from . import wizard_reason

View File

@@ -0,0 +1,219 @@
# -*- coding: utf-8 -*-
from datetime import date, datetime, timedelta
from odoo import models, fields, api, _
from odoo.exceptions import Warning, UserError
class HrCustody(models.Model):
"""
Hr custody contract creation model.
"""
_name = 'hr.custody'
_description = 'Hr Custody Management'
_inherit = ['mail.thread', 'mail.activity.mixin']
read_only = fields.Boolean(string="check field")
@api.onchange('employee')
def _compute_read_only(self):
""" Use this function to check weather the user has the permission to change the employee"""
res_user = self.env['res.users'].search([('id', '=', self._uid)])
print(res_user.has_group('hr.group_hr_user'))
if res_user.has_group('hr.group_hr_user'):
self.read_only = True
else:
self.read_only = False
def mail_reminder(self):
now = datetime.now() + timedelta(days=1)
date_now = now.date()
match = self.search([('state', '=', 'approved')])
for i in match:
if i.return_date:
exp_date = fields.Date.from_string(i.return_date)
if exp_date <= date_now:
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
url = base_url + _('/web#id=%s&view_type=form&model=hr.custody&menu_id=') % i.id
mail_content = _('Hi %s,<br>As per the %s you took %s on %s for the reason of %s. S0 here we '
'remind you that you have to return that on or before %s. Otherwise, you can '
'renew the reference number(%s) by extending the return date through following '
'link.<br> <div style = "text-align: center; margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; display: inline-block; '
'margin-bottom: 0px; font-weight: 400;text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; background-image: none; '
'background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px;">'
'Renew %s</a></div>') % \
(i.employee.name, i.name, i.custody_name.name, i.date_request, i.purpose,
date_now, i.name, url, i.name)
main_content = {
'subject': _('REMINDER On %s') % i.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': i.employee.work_email,
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
if i.employee.user_id:
mail_id.mail_message_id.write(
{'needaction_partner_ids': [(4, i.employee.user_id.partner_id.id)]})
mail_id.mail_message_id.write({'partner_ids': [(4, i.employee.user_id.partner_id.id)]})
@api.model
def create(self, vals):
vals['name'] = self.env['ir.sequence'].next_by_code('hr.custody')
return super(HrCustody, self).create(vals)
def sent(self):
self.state = 'to_approve'
def send_mail(self):
template = self.env.ref('hr_custody.custody_email_notification_template')
self.env['mail.template'].browse(template.id).send_mail(self.id)
self.mail_send = True
def set_to_draft(self):
self.state = 'draft'
def renew_approve(self):
for custody in self.env['hr.custody'].search([('custody_name', '=', self.custody_name.id)]):
if custody.state == "approved":
raise UserError(_("Custody is not available now"))
self.return_date = self.renew_date
self.renew_date = ''
self.state = 'approved'
def renew_refuse(self):
for custody in self.env['hr.custody'].search([('custody_name', '=', self.custody_name.id)]):
if custody.state == "approved":
raise UserError(_("Custody is not available now"))
self.renew_date = ''
self.state = 'approved'
def approve(self):
for custody in self.env['hr.custody'].search([('custody_name', '=', self.custody_name.id)]):
if custody.state == "approved":
raise UserError(_("Custody is not available now"))
self.state = 'approved'
def set_to_return(self):
self.state = 'returned'
self.return_date = date.today()
# return date validation
@api.constrains('return_date')
def validate_return_date(self):
if self.return_date < self.date_request:
raise Warning('Please Give Valid Return Date')
name = fields.Char(string='Code', copy=False, help="Code")
company_id = fields.Many2one('res.company', 'Company', readonly=True, help="Company",
default=lambda self: self.env.user.company_id)
rejected_reason = fields.Text(string='Rejected Reason', copy=False, readonly=1, help="Reason for the rejection")
renew_rejected_reason = fields.Text(string='Renew Rejected Reason', copy=False, readonly=1,
help="Renew rejected reason")
date_request = fields.Date(string='Requested Date', required=True, track_visibility='always', readonly=True,
help="Requested date",
states={'draft': [('readonly', False)]}, default=datetime.now().strftime('%Y-%m-%d'))
employee = fields.Many2one('hr.employee', string='Employee', required=True, readonly=True, help="Employee",
default=lambda self: self.env.user.employee_id.id,
states={'draft': [('readonly', False)]})
purpose = fields.Char(string='Reason', track_visibility='always', required=True, readonly=True, help="Reason",
states={'draft': [('readonly', False)]})
custody_name = fields.Many2one('custody.property', string='Property', required=True, readonly=True,
help="Property name",
states={'draft': [('readonly', False)]})
return_date = fields.Date(string='Return Date', required=True, track_visibility='always', readonly=True,
help="Return date",
states={'draft': [('readonly', False)]})
renew_date = fields.Date(string='Renewal Return Date', track_visibility='always',
help="Return date for the renewal", readonly=True, copy=False)
notes = fields.Html(string='Notes')
renew_return_date = fields.Boolean(default=False, copy=False)
renew_reject = fields.Boolean(default=False, copy=False)
state = fields.Selection([('draft', 'Draft'), ('to_approve', 'Waiting For Approval'), ('approved', 'Approved'),
('returned', 'Returned'), ('rejected', 'Refused')], string='Status', default='draft',
track_visibility='always')
mail_send = fields.Boolean(string="Mail Send")
class HrPropertyName(models.Model):
"""
Hr property creation model.
"""
_name = 'custody.property'
_description = 'Property Name'
name = fields.Char(string='Property Name', required=True)
image = fields.Image(string="Image",
help="This field holds the image used for this provider, limited to 1024x1024px")
image_medium = fields.Binary(
"Medium-sized image", attachment=True,
help="Medium-sized image of this provider. It is automatically "
"resized as a 128x128px image, with aspect ratio preserved. "
"Use this field in form views or some kanban views.")
image_small = fields.Binary(
"Small-sized image", attachment=True,
help="Small-sized image of this provider. It is automatically "
"resized as a 64x64px image, with aspect ratio preserved. "
"Use this field anywhere a small image is required.")
desc = fields.Html(string='Description', help="Description")
company_id = fields.Many2one('res.company', 'Company', help="Company",
default=lambda self: self.env.user.company_id)
property_selection = fields.Selection([('empty', 'No Connection'),
('asset', 'Assets'),
('product', 'Products')],
default='empty',
string='Property From', help="Select the property")
asset_true = fields.Boolean('Asset Exists', default=False)
asset_id = fields.Many2one('account.asset', string="Assets", help="Assets")
product_id = fields.Many2one('product.product', string='Product', help="Product")
# def _compute_read_only(self):
# """ Use this function to check weather the user has the permission to change the employee"""
# res_user = self.env['res.users'].search([('id', '=', self._uid)])
# print(res_user.has_group('hr.group_hr_user'))
# if res_user.has_group('hr.group_hr_user'):
# self.read_only = True
# else:
# self.read_only = False
@api.onchange('property_selection')
def onchange_property_selection(self):
if self.property_selection == 'asset':
asset_obj = self.env['ir.module.module'].search([('name', '=', 'account_asset')])
if asset_obj.state != 'installed':
self.asset_true = False
raise UserError(_('No asset module found. Kindly install the asset module.'))
else:
self.asset_true = True
@api.onchange('product_id')
def onchange_product(self):
self.name = self.product_id.name
class HrReturnDate(models.TransientModel):
"""Hr custody contract renewal wizard"""
_name = 'wizard.return.date'
_description = 'Hr Custody Name'
returned_date = fields.Date(string='Renewal Date', required=1)
# renewal date validation
@api.constrains('returned_date')
def validate_return_date(self):
context = self._context
custody_obj = self.env['hr.custody'].search([('id', '=', context.get('custody_id'))])
if self.returned_date <= custody_obj.date_request:
raise Warning('Please Give Valid Renewal Date')
def proceed(self):
context = self._context
custody_obj = self.env['hr.custody'].search([('id', '=', context.get('custody_id'))])
custody_obj.write({'renew_return_date': True,
'renew_date': self.returned_date,
'state': 'to_approve'})

View File

@@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class HrCustody(models.Model):
_inherit = 'hr.employee'
custody_count = fields.Integer(compute='_custody_count', string='# Custody')
equipment_count = fields.Integer(compute='_equipment_count', string='# Equipments')
# count of all custody contracts
def _custody_count(self):
for each in self:
custody_ids = self.env['hr.custody'].search([('employee', '=', each.id)])
each.custody_count = len(custody_ids)
# count of all custody contracts that are in approved state
def _equipment_count(self):
for each in self:
equipment_obj = self.env['hr.custody'].search([('employee', '=', each.id), ('state', '=', 'approved')])
equipment_ids = []
for each1 in equipment_obj:
if each1.custody_name.id not in equipment_ids:
equipment_ids.append(each1.custody_name.id)
each.equipment_count = len(equipment_ids)
# smart button action for returning the view of all custody contracts related to the current employee
def custody_view(self):
for each1 in self:
custody_obj = self.env['hr.custody'].search([('employee', '=', each1.id)])
custody_ids = []
for each in custody_obj:
custody_ids.append(each.id)
view_id = self.env.ref('hr_custody.hr_custody_form_view').id
if custody_ids:
if len(custody_ids) <= 1:
value = {
'view_mode': 'form',
'res_model': 'hr.custody',
'view_id': view_id,
'type': 'ir.actions.act_window',
'name': _('Custody'),
'res_id': custody_ids and custody_ids[0]
}
else:
value = {
'domain': str([('id', 'in', custody_ids)]),
'view_mode': 'tree,form',
'res_model': 'hr.custody',
'view_id': False,
'type': 'ir.actions.act_window',
'name': _('Custody'),
'res_id': custody_ids
}
return value
# smart button action for returning the view of all custody contracts that are in approved state,
# related to the current employee
def equipment_view(self):
for each1 in self:
equipment_obj = self.env['hr.custody'].search([('employee', '=', each1.id), ('state', '=', 'approved')])
equipment_ids = []
for each in equipment_obj:
if each.custody_name.id not in equipment_ids:
equipment_ids.append(each.custody_name.id)
view_id = self.env.ref('hr_custody.custody_custody_form_view').id
if equipment_ids:
if len(equipment_ids) <= 1:
value = {
'view_mode': 'form',
'res_model': 'custody.property',
'view_id': view_id,
'type': 'ir.actions.act_window',
'name': _('Equipments'),
'res_id': equipment_ids and equipment_ids[0]
}
else:
value = {
'domain': str([('id', 'in', equipment_ids)]),
'view_mode': 'tree,form',
'res_model': 'custody.property',
'view_id': False,
'type': 'ir.actions.act_window',
'name': _('Equipments'),
'res_id': equipment_ids
}
return value

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class WizardReason(models.TransientModel):
"""
Hr custody contract refuse wizard.
"""
_name = 'wizard.reason'
def send_reason(self):
context = self._context
reject_obj = self.env[context.get('model_id')].search([('id', '=', context.get('reject_id'))])
if 'renew' in context.keys():
reject_obj.write({'state': 'approved',
'renew_reject': True,
'renew_rejected_reason': self.reason})
else:
if context.get('model_id') == 'hr.holidays':
reject_obj.write({'rejected_reason': self.reason})
reject_obj.action_refuse()
else:
reject_obj.write({'state': 'rejected',
'rejected_reason': self.reason})
reason = fields.Text(string="Reason", help="Reason")

View File

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

View File

@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, tools
class CustodyHistory(models.Model):
_name = "report.custody"
_description = "Custody Analysis"
_auto = False
name = fields.Char(string='Code')
date_request = fields.Date(string='Requested Date')
employee = fields.Many2one('hr.employee', string='Employee')
purpose = fields.Char(string='Reason')
custody_name = fields.Many2one('custody.property', string='Property Name')
return_date = fields.Date(string='Return Date')
renew_date = fields.Date(string='Renewal Return Date')
renew_return_date = fields.Boolean(string='Renewal Return Date')
state = fields.Selection([('draft', 'Draft'), ('to_approve', 'Waiting For Approval'), ('approved', 'Approved'),
('returned', 'Returned'), ('rejected', 'Refused')], string='Status')
_order = 'name desc'
def _select(self):
select_str = """
SELECT
(select 1 ) AS nbr,
t.id as id,
t.name as name,
t.date_request as date_request,
t.employee as employee,
t.purpose as purpose,
t.custody_name as custody_name,
t.return_date as return_date,
t.renew_date as renew_date,
t.renew_return_date as renew_return_date,
t.state as state
"""
return select_str
def _group_by(self):
group_by_str = """
GROUP BY
t.id,
name,
date_request,
employee,
purpose,
custody_name,
return_date,
renew_date,
renew_return_date,
state
"""
return group_by_str
def init(self):
tools.sql.drop_view_if_exists(self._cr, 'report_custody')
self._cr.execute("""
CREATE view report_custody as
%s
FROM hr_custody t
%s
""" % (self._select(), self._group_by()))

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="view_report_custody" model="ir.ui.view">
<field name="name">report.custody.pivot</field>
<field name="model">report.custody</field>
<field name="arch" type="xml">
<pivot string="Ticket Analysis" display_quantity="true" disable_linking="True">
<field name="name" type="row"/>
</pivot>
</field>
</record>
<record id="action_report_custody" model="ir.actions.act_window">
<field name="name">Custody Analysis</field>
<field name="res_model">report.custody</field>
<field name="view_mode">pivot</field>
<field name="context">{'group_by_no_leaf':1,'group_by':[]}</field>
<field name="help">This report allows you to analyse all Custody Requests. </field>
</record>
<menuitem name="Report" id="menu_custody_report"
groups="hr.group_hr_manager"
parent="hr_custody_main_menu" sequence="1"/>
<menuitem name="Custody Analysis" action="action_report_custody" id="menu_custody_analysis"
groups="hr.group_hr_manager"
parent="menu_custody_report" sequence="1"/>
</data>
</odoo>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" ?>
<odoo>
<record id="property_rule_custody" model="ir.rule">
<field name="name">Custody Multi Company</field>
<field name="model_id" ref="model_custody_property"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="property_rule_custody_req" model="ir.rule">
<field name="name">Custody Request Multi Company</field>
<field name="model_id" ref="model_hr_custody"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="hr_custody_personal_rule_manager" model="ir.rule">
<field name="name">Employee Resignation Manager</field>
<field ref="hr_custody.model_hr_custody" name="model_id"/>
<field name="domain_force">[('employee.user_id.id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<!-- <record model="ir.ui.view" id="view_hr_custody_inherit_form">-->
<!-- <field name="model">hr.custody</field>-->
<!-- <field name="inherit_id" ref="hr_custody.hr_custody_form_view"/>-->
<!-- <field name="groups_id" eval="[(6, 0, [ref('hr.group_hr_user')])]"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <field name="employee" position="attributes">-->
<!-- <attribute name="readonly">False</attribute>-->
<!-- </field>-->
<!-- </field>-->
<!-- </record>-->
</odoo>

View File

@@ -0,0 +1,13 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_hr_custody_hr","hr.custody.hr","model_hr_custody","hr.group_hr_manager",1,1,1,1
"access_hr_custody_hr_manager","hr.custody.user","model_hr_custody","hr.group_hr_user",1,1,1,1
"access_hr_custody_hr_employee","hr.custody.employee","model_hr_custody","base.group_user",1,1,1,0
"access_hr_custody_hr1","hr.custody.hr1","model_custody_property","hr.group_hr_manager",1,1,1,1
"access_hr_custody_hr_manager1","hr.custody.user1","model_custody_property","hr.group_hr_user",1,1,1,1
"access_hr_custody_hr_employee1","hr.custody.employee1","model_custody_property","base.group_user",1,0,0,0
"access_hr_custody_hr2","hr.custody.hr2","model_wizard_return_date","hr.group_hr_manager",1,1,1,1
"access_hr_custody_hr3","hr.custody.hr3","model_report_custody","hr.group_hr_manager",1,1,1,1
"access_hr_custody_hr_manager2","hr.custody.user2","model_wizard_return_date","hr.group_hr_user",1,1,1,1
"access_hr_custody_hr_manager3","hr.custody.user3","model_report_custody","hr.group_hr_user",1,1,1,1
"access_hr_custody_hr_employee2","hr.custody.employee2","model_wizard_return_date","base.group_user",1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_custody_hr hr.custody.hr model_hr_custody hr.group_hr_manager 1 1 1 1
3 access_hr_custody_hr_manager hr.custody.user model_hr_custody hr.group_hr_user 1 1 1 1
4 access_hr_custody_hr_employee hr.custody.employee model_hr_custody base.group_user 1 1 1 0
5 access_hr_custody_hr1 hr.custody.hr1 model_custody_property hr.group_hr_manager 1 1 1 1
6 access_hr_custody_hr_manager1 hr.custody.user1 model_custody_property hr.group_hr_user 1 1 1 1
7 access_hr_custody_hr_employee1 hr.custody.employee1 model_custody_property base.group_user 1 0 0 0
8 access_hr_custody_hr2 hr.custody.hr2 model_wizard_return_date hr.group_hr_manager 1 1 1 1
9 access_hr_custody_hr3 hr.custody.hr3 model_report_custody hr.group_hr_manager 1 1 1 1
10 access_hr_custody_hr_manager2 hr.custody.user2 model_wizard_return_date hr.group_hr_user 1 1 1 1
11 access_hr_custody_hr_manager3 hr.custody.user3 model_report_custody hr.group_hr_user 1 1 1 1
12 access_hr_custody_hr_employee2 hr.custody.employee2 model_wizard_return_date base.group_user 1 1 1 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@@ -0,0 +1,531 @@
<div class="row"
style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;">
<a href="https://www.openhrms.com/" target="_blank"><img src="images/openhrms.png"
style=" width: 293px; padding: 1rem 0rem; margin: auto"
alt="cybrosys-logo"></a>
</div>
<div class="row"
style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;">
<div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px">
<div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;">
<h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;">Open HRMS Custody Management </h1>
<h3 style="font-size: 21px;margin-top: 8px;position: relative;"> Manages Custody Handling Process </h3>
</div>
<h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2>
<ul style=" padding: 0 1px; list-style: none; ">
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">
Managing custody handling process.
</li>
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">
Option to renewal.
</li>
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">
Option to take reports.
</li>
</ul>
</div>
<div class="col-md-5 col-sm-12 col-xs-12"><img src="images/custody.png" class="img-responsive" alt=""></div>
</div>
<div>
<section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;">
<div class="row py-4 px-3">
<div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;">
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab"
style="border: none;background: unset;">
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link active show"
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Overview </a>
</li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-features" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link "
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Features </a>
</li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab"
aria-controls="pills-profile" aria-selected="false"
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Screenshots </a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent"
style="padding-top: 30px; padding-bottom: 30px; padding: 30px;">
<div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- Overview-->
<h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h3 class="oe_slogan"
style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;">
Blues over resource tracking? No more worries. OHRMS Custody Management system constitutes the ultimate solution for a transparent custody of company resources.
</h3>
</div>
<div class="px-3 pt-1 tab-pane fade " id="pills-features" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- feature tab-->
<h2 style="font-weight: 600;text-align: center;width: 100%;"> Open HRMS Custody Management </h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<ul>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
Managing custody handling process.
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
Option to renewal.
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
Option to take reports.
</li>
</ul>
</div>
<!-- Screenshot tab-->
<div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel"
aria-labelledby="pills-profile-tab">
<div class="tab-pane">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div>
<section class="oe_container">
<div id="demo" class="row carousel slide mb32" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">
Custody Request
</h3>
<p> Create a Custody Request and send for Approval. </p>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/1custody.png"></div>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">
Property
</h3>
<p> Create a Property of Company. </p>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/2custody.png"></div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#demo" data-slide="prev" style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a class="carousel-control-next" href="#demo" data-slide="next" style="right:-25px;width: 35px;color: #000;"> <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> </a>
</div>
</section>
</div>
</div>
</div>
<!-- faq tab-->
<div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact"
role="tabpanel"
aria-labelledby="pills-contact-tab">
<ul class="list-unstyled">
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height: 0px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/ohrms_core/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/core_image.gif">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/hrms_dashboard/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/dash_image.gif">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/oh_hr_zk_attendance/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/bio_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/oh_appraisal/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/appraisal_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/hr_employee_shift/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/shift_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/13.0/ohrms_salary_advance/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/salary_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a class="carousel-control-next"
href="#demo1"
data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span>
</a>
</div>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; ">
<!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> -->
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-customization.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Customization </a>
</h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-implementation.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Implementation </a>
</h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-integration.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Integration </a>
</h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-support.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Support</a>
</h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img
src="https://www.cybrosys.com/images/hire-odoo-developer.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hire Odoo Developers</a>
</h3>
</a>
</div>
<!-- </div> -->
</div>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<div class="row" style="margin: 0">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> -->
<div class="row" style="width: 100%">
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Trading </a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Easily procure and sell your products.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png"
alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;" style=" margin-bottom: 10px; ">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Manufacturing</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Plan, track and schedule your operations.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Restaurant</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Run your bar or restaurant methodical.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
POS</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Easy configuring and convivial selling.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
E-commerce & Website</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Mobile friendly, awe-inspiring product pages.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hotel Management</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
An all-inclusive hotel management application.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Education</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
A Collaborative platform for educational management.
</h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Service Management</a>
</h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Keep track of services and invoice accordingly.
</h3>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<center>
<div class="col-md-12" style="margin: auto !important;
width: 70%;
padding: 30px;">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h4 style="font-size:16px;"> 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.
</h4>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-envelope"></i>Email us </h4>
<p>odoo@cybrosys.com / info@cybrosys.com</p>
</div>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-phone"></i> Contact Us </h4>
<a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a>
</div>
</div>
Suggested Products
</center>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<div class="oe_slogan" style="margin-bottom: 0px;">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; ">
</div>
<br>
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;"
class="center-block">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "><a href="https://twitter.com/cybrosys"
target="_blank"><i
class="fa fa-2x fa-twitter"
style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i
class="fa fa-2x fa-linkedin"
style="color:white;background: #31a3d6;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook"
style="color:white;background: #3b5998;width:35px; height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest"
style="color:white;background: #ac0f18;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
</div>
</div>
</section>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="seq_hr_custody_seq" model="ir.sequence">
<field name="name">Custody Code</field>
<field name="code">hr.custody</field>
<field name="prefix">CR</field>
<field eval="4" name="padding"/>
<field eval="False" name="company_id"/>
</record>
<record model='ir.ui.view' id='wizard_return_date_form'>
<field name="name">wizard.return.date.form</field>
<field name="model">wizard.return.date</field>
<field name="arch" type="xml">
<form string="Renewal Request">
<group>
<group>
<field name="returned_date"/>
</group>
</group>
<footer>
<button name="proceed" string="Proceed" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model='ir.ui.view' id='custody_custody_form_view'>
<field name="name">custody.property.form</field>
<field name="model">custody.property</field>
<field name="arch" type="xml">
<form string="Equipments">
<sheet>
<field name="image" widget='image' class="oe_avatar"/>
<div class="oe_title">
<h1>
<field name="name" placeholder="Name"/>
</h1>
</div>
<group>
<group>
<field name="property_selection" widget="radio"/>
<field name="asset_true" invisible="1"/>
<field name="asset_id" attrs="{'invisible': [('asset_true', '=', False)]}"/>
<field name="product_id"
attrs="{'invisible': [('property_selection', '!=', 'product')]}"/>
<field name="company_id" options="{'no_create': True}"
groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page name="desc" string="Description">
<field name="desc"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model='ir.actions.act_window' id='wizard_return_date_act'>
<field name="name">Custody Request</field>
<field name="res_model">wizard.return.date</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_return_date_form"/>
<field name="target">new</field>
</record>
<record id="hr_custody_form_view" model="ir.ui.view">
<field name="name">hr.custody.form</field>
<field name="model">hr.custody</field>
<field name="arch" type="xml">
<form string="Custody">
<header>
<button string="Send For Approval" type="object" name="sent"
class="oe_highlight"
attrs="{'invisible': [('state','not in',('draft'))]}"/>
<button string="Approve" groups="hr.group_hr_manager" type="object" name="approve"
class="oe_highlight"
attrs="{'invisible': ['|',('state','not in',('to_approve')),
('renew_return_date','=',True)]}"/>
<button string="Renewal Approval" groups="hr.group_hr_manager" type="object"
name="renew_approve"
class="oe_highlight"
attrs="{'invisible': ['|',('state','not in',('to_approve')),
('renew_return_date','=',False)]}"/>
<button string="Refuse" groups="hr.group_hr_manager" type="action"
name="%(hr_custody.wizard_reason_act)d"
attrs="{'invisible': ['|',('state','not in',('to_approve')),
('renew_return_date','=',True)]}" class="btn-primary"
context="{'reject_id':id,'model_id':'hr.custody'}"/>
<button class="btn-primary" name="%(hr_custody.wizard_reason_act)d" string="Refuse"
groups="hr.group_hr_manager" type="action"
attrs="{'invisible': ['|',('state','not in',('to_approve')),
('renew_return_date','=',False)]}"
context="{'reject_id':id,'model_id':'hr.custody','renew': 'renew'}"/>
<button string="Set to Draft" type="object" name="set_to_draft"
attrs="{'invisible': [('state','not in',('rejected'))]}"/>
<button string="Return" type="object" name="set_to_return" groups="hr.group_hr_manager"
attrs="{'invisible': [('state','not in',('approved'))]}"/>
<button string="Send Mail" type="object" name="send_mail" groups="hr.group_hr_manager"
attrs="{'invisible': ['|',('mail_send', '=', False),('state','not in',('approved'))]}"/>
<button string="Send Mail" type="object" class="oe_highlight" name="send_mail"
groups="hr.group_hr_manager"
attrs="{'invisible': ['|',('mail_send', '=', True),('state','not in',('approved'))]}"/>
<button string="Renew" type="action" name="%(wizard_return_date_act)d"
context="{'custody_id':id}" class="oe_highlight"
attrs="{'invisible': ['|',('state','not in',('approved')),
('renew_return_date','=',True)]}"/>
<field name="state" widget="statusbar" statusbar_visible="draft,to_approve,approved,returned"/>
</header>
<sheet>
<h1>
<field name="name" readonly="1" nolabel="1"/>
</h1>
<group>
<group>
<field name="read_only" invisible="1"/>
<field name="employee" attrs="{'readonly': [('read_only','=',False)]}"/>
<field name="custody_name" options="{'no_open':True,'no_create':True}"
domain="[('company_id','child_of',[company_id])]"/>
<field name="renew_return_date" invisible="1"/>
<field name="renew_reject" invisible="1"/>
<field name="mail_send" invisible="1"/>
<field name="purpose"/>
</group>
<group>
<field name="date_request"/>
<field name="return_date" attrs="{'invisible': [('renew_return_date','=',True),
('renew_date','not in',[None,False]),('renew_reject','=',False)]}"/>
<field name="renew_date" attrs="{'invisible': ['|',('renew_return_date','=',False),
('state','!=','to_approve')]}"/>
<field name="rejected_reason" attrs="{'invisible': [('state','not in',('rejected'))]}"/>
<field name="renew_rejected_reason"
attrs="{'invisible': ['|',('renew_reject','=',False),('state','not in',('approved'))]}"/>
<field name="company_id" options="{'no_create': True}"
groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</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="hr_custody_tree_view" model="ir.ui.view">
<field name="name">hr.custody.tree</field>
<field name="model">hr.custody</field>
<field name="arch" type="xml">
<!-- <tree decoration-info="state == 'draft'" colors="red:current_date > return_date;grey:state == 'rejected';green:state == 'approved';-->
<!-- black:state == 'to_approve';grey:state == 'returned';">-->
<tree>
<field name="name"/>
<field name="employee"/>
<field name="custody_name"/>
<field name="purpose"/>
<field name="date_request"/>
<field name="return_date"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="hr_property_tree_view" model="ir.ui.view">
<field name="name">hr_property_tree_view.tree</field>
<field name="model">custody.property</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<record id="hr_custody_search_view" model="ir.ui.view">
<field name="name">hr.custody.search</field>
<field name="model">hr.custody</field>
<field name="arch" type="xml">
<search string="Custody">
<field name="name"/>
<field name="employee"/>
<field name="custody_name"/>
<field name="purpose"/>
<field name="date_request"/>
<field name="return_date"/>
<field name="state"/>
<separator/>
<group expand="0" string="Group By">
<filter string="Status" name="status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Employee" name="employee" domain="[]" context="{'group_by':'employee'}"/>
<filter string="Custody Name" name="custody" domain="[]" context="{'group_by':'custody_name'}"/>
</group>
</search>
</field>
</record>
<record id="action_hr_custody" model="ir.actions.act_window">
<field name="name">Custody</field>
<field name="res_model">hr.custody</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="hr_custody_search_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</field>
</record>
<record id="action_hr_property" model="ir.actions.act_window">
<field name="name">Property</field>
<field name="res_model">custody.property</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</field>
</record>
<menuitem id="hr_custody_main_menu"
web_icon="hr_custody,static/description/custody_icon.png"
name="Custody" sequence="20"/>
<menuitem id="hr_custody_menu" parent="hr_custody_main_menu"
name="Custody Management" sequence="20"/>
<menuitem action="action_hr_custody" id="hr_custody_menu" parent="hr_custody.hr_custody_main_menu"
name="Custody Request" sequence="1"/>
<menuitem action="action_hr_property" id="hr_property_menu" parent="hr_custody.hr_custody_main_menu"
name="Property" sequence="5" groups="hr.group_hr_manager"/>
</data>
</odoo>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record model="ir.cron" id="hr_custody_data_reminders">
<field name="name">HR Custody Return Notification</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model_id" ref="model_hr_custody"/>
<field name="state">code</field>
<field name="code">model.mail_reminder()</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="custody_hr_employee_inherit_form_view">
<field name="name">hr.employee.form.inherit.view</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<div class="oe_button_box" position="inside">
<button class="oe_stat_button" name="custody_view" type="object" icon="fa-list-ol">
<field string="Custody" name="custody_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" name="equipment_view" type="object" icon="fa-tablet">
<field string="Equipments" name="equipment_count" widget="statinfo"/>
</button>
</div>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="custody_email_notification_template" model="mail.template">
<field name="name">Custody e-mail template</field>
<field name="email_from">${object.company_id and object.company_id.email or ''}</field>
<field name="subject">Notification to return company asset-${object.custody_name.name}</field>
<field name="email_to">${object.email|safe}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="hr_custody.model_hr_custody"/>
<field name="auto_delete" eval="True"/>
<field name="body_html">
<![CDATA[
<p>Dear ${(object.employee.name)},<br/><br/>
You are in possession of the company asset
<strong>"${(object.custody_name.name)}"</strong>
since <strong>${(object.return_date)}.</strong><br/><br/>
Please kindly return the property as soon as possible.<br/><br/></p>
Regards,<br/><br/>
${(object.company_id.name)}]]>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model='ir.ui.view' id='wizard_reason_form'>
<field name="name">wizard.reason.form</field>
<field name="model">wizard.reason</field>
<field name="arch" type="xml">
<form string="Update Reason">
<group>
<field name="reason" required="True"/>
</group>
<footer>
<button name="send_reason" string="Proceed" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record model='ir.actions.act_window' id='wizard_reason_act'>
<field name="name">Update Reason</field>
<field name="res_model">wizard.reason</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_reason_form"/>
<field name="target">new</field>
</record>
</data>
</odoo>