Merge pull request #57 from expsa/khazraji_hr

add custdy modul
This commit is contained in:
mohammed-alkhazrji 2025-12-09 17:08:06 +03:00 committed by GitHub
commit 8de7d6ab97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 1434 additions and 0 deletions

View File

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

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
{
'name': 'HR Custody',
'category': 'Odex25-HR/Odex25-HR',
'summary': 'Custody and receiving Employee custody',
'version': '1.0',
'sequence': 4,
'website': 'http://exp-sa.com',
'license': 'GPL-3',
'author': 'Expert Co. Ltd.',
'depends': ['base','hr_base','employee_requests'],
'data': [
'security/ir.model.access.csv',
'security/custody_security.xml',
'views/employee_custody_views.xml',
'views/receiving_employee_custody.xml',
],
}

View File

@ -0,0 +1,753 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * exp_employee_custody
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-31 10:22+0000\n"
"PO-Revision-Date: 2023-01-31 10:22+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: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_needaction
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_needaction
msgid "Action Needed"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_ids
msgid "Activities"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_exception_decoration
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_state
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_state
msgid "Activity State"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_type_icon
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_type_icon
msgid "Activity Type Icon"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Add Comments here ...."
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__advantage_line_id
msgid "Advantage Line"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__amount
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Amount"
msgstr "المبلغ"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_attachment_count
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_attachment_count
msgid "Attachment Count"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__call_compute_function
msgid "Call Compute Function"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__create_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__create_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__create_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__create_uid
msgid "Created by"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__create_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__create_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__create_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__create_date
msgid "Created on"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__current_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__current_date
msgid "Current Date"
msgstr ""
#. module: exp_employee_custody
#: model:ir.ui.menu,name:exp_employee_custody.custody_submenu
msgid "Custody"
msgstr "العُهــده"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__custody_line_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__custody_line_id
msgid "Custody Line"
msgstr "عهد الموظف"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Custody Lines"
msgstr "عهد الموظفين"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_tree_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_tree_view
msgid "Date"
msgstr "التاريخ"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Date Delivering"
msgstr "تاريخ الاستلام"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__deduction_amount
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__deduction_amount
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Deduction Amount"
msgstr "قيمة الخصم"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__department_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__department_id
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_tree_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_tree_view
msgid "Department"
msgstr "الإدارة"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Description"
msgstr "الوصف"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#, python-format
msgid "Direct Manager"
msgstr "المدير المباشر"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Directed Manager"
msgstr "المدير المباشر"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__display_name
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__display_name
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__display_name
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__display_name
msgid "Display Name"
msgstr ""
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#, python-format
msgid "Draft"
msgstr "مبدئي"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_tree_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_tree_view
msgid "Employee"
msgstr "الموظف"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#, python-format
msgid "Employee \"%s\" has not contract !"
msgstr "الموظف \"%s\" ليس لديه عقد!"
#. module: exp_employee_custody
#: model:ir.actions.act_window,name:exp_employee_custody.employee_custody_action
#: model:ir.ui.menu,name:exp_employee_custody.employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_tree_view
msgid "Employee Custody"
msgstr "العهد الغير مالية"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__employee_custody_line
msgid "Employee Custody Line"
msgstr "عهد الموظف"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__employee_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__employee_id
msgid "Employee"
msgstr "الموظف"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Employee Info"
msgstr "معلومات الموظف"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Employee Number"
msgstr "رقم الموظف"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__employee_return_custody_line_id
msgid "Employee Return Custody Line"
msgstr "عهد الموظف المرجعة"
#. module: exp_employee_custody
#: model:ir.model,name:exp_employee_custody.model_custom_employee_custody
msgid "Employee custody"
msgstr "العهد الغير مالية"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__employee_no
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__employee_no
msgid "Employee number"
msgstr "رقم الموظف"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_follower_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_follower_ids
msgid "Followers"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_channel_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_channel_ids
msgid "Followers (Channels)"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_partner_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_partner_ids
msgid "Followers (Partners)"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__activity_type_icon
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__from_hr_department
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__from_hr_department
msgid "From Hr Department"
msgstr "من موظف آخر"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "HR Manager"
msgstr "مدير الموارد البشرية"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__admin
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__admin
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#, python-format
msgid "Human Resources Manager"
msgstr "تصديق الموارد البشرية"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__id
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__id
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__id
msgid "ID"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_exception_icon
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_exception_icon
msgid "Icon"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__activity_exception_icon
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Identification code"
msgstr "رقم المتسلسل"
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_needaction
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_unread
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_needaction
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_unread
msgid "If checked, new messages require your attention."
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_has_error
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_has_sms_error
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_has_error
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Invisible field to Call compute function"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_is_follower
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_is_follower
msgid "Is Follower"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__job_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__job_id
msgid "Job Position"
msgstr "المناصب الوظيفية"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Job Title"
msgstr "الوظيفة"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody____last_update
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line____last_update
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line____last_update
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving____last_update
msgid "Last Modified on"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__write_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__write_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__write_uid
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__write_uid
msgid "Last Updated by"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__write_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__write_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__write_date
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__write_date
msgid "Last Updated on"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_main_attachment_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_main_attachment_id
msgid "Main Attachment"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_has_error
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_has_error
msgid "Message Delivery error"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_ids
msgid "Messages"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__my_activity_date_deadline
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__name
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__name
msgid "Name"
msgstr "الاسم"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Nationality"
msgstr "الجنسية"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__country_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__country_id
msgid "Nationality (Country)"
msgstr "الجنسية (البلد)"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_date_deadline
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_date_deadline
msgid "Next Activity Deadline"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_summary
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_summary
msgid "Next Activity Summary"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_type_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_type_id
msgid "Next Activity Type"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__note
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__note
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__note
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__note
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Note"
msgstr "ملاحظات"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Notes"
msgstr "ملاحظات"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_needaction_counter
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_needaction_counter
msgid "Number of Actions"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_has_error_counter
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_has_error_counter
msgid "Number of errors"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_needaction_counter
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_has_error_counter
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__message_unread_counter
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__message_unread_counter
msgid "Number of unread messages"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Other Employee"
msgstr "موظف آخر"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__quantity
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__quantity
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Quantity"
msgstr "الكمية"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Re-fill"
msgstr "تحديث عهد الموظف"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__receiving_custody
msgid "Receiving Custody"
msgstr "تسوية العهده"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__receiving_date
msgid "Receiving Date"
msgstr "تاريخ الاستلام"
#. module: exp_employee_custody
#: model:ir.actions.act_window,name:exp_employee_custody.receiving_employee_custody_action
#: model:ir.ui.menu,name:exp_employee_custody.receiving_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_tree_view
msgid "Receiving Employee Custody"
msgstr "تسوية عهد الموظف"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Receiving Info"
msgstr "معلومات الارجاع"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__receiving_quantity
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Receiving Quantity"
msgstr "الكمية المرجعة"
#. module: exp_employee_custody
#: model:ir.model,name:exp_employee_custody.model_hr_custody_receiving
msgid "Receiving custody"
msgstr "تسوية العهده"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#, python-format
msgid "Receiving quantity can not be greater than original quantity"
msgstr "الكمية المرجعة لا يمكن أن تكون أكبر من الكمية المستلمة"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#, python-format
msgid "Receiving quantity can not be negative value "
msgstr "لا يمكن أن تكون كمية الاستلام قيمة سالبة"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
#, python-format
msgid "Refuse"
msgstr "رفض"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__activity_user_id
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__activity_user_id
msgid "Responsible User"
msgstr "المستخدم المسؤول"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "Rest To Draft"
msgstr "إرجاع لمبدئي"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__return_custody_line_ids
msgid "Return Custody Line"
msgstr "عهد الموظف المرجعة"
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__done
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__done
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
#, python-format
msgid "Return Done"
msgstr "تم ارجاع العهده"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Return Lines"
msgstr "عناصر العهد المرجعة"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_has_sms_error
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__salary_rule_id
msgid "Salary Rule"
msgstr "قاعده الراتب"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__salary_rule_flag
msgid "Salary Rule Flag"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Salary rule"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Salary rule flag"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Save contract advantage line"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_custody_line__serial
#: model:ir.model.fields,field_description:exp_employee_custody.field_employee_return_custody_line__serial
msgid "Serial"
msgstr "متسلسل"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Set to draft"
msgstr "إرجاع لمبدئي"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__state
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__state
msgid "State"
msgstr "الحالة"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Statement of Custody"
msgstr "العهد المرجعة"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_tree_view
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_tree_view
msgid "Status"
msgstr "الحالة"
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__activity_state
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__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 ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Submit"
msgstr "إرسال"
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__activity_exception_decoration
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_unread
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_unread
msgid "Unread Messages"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__message_unread_counter
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__message_unread_counter
msgid "Unread Messages Counter"
msgstr ""
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__approve
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__approve
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
#, python-format
msgid "Warehouse Keeper"
msgstr "إعتماد مسؤول المخزن"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "Warehouse keeper"
msgstr "إعتماد مسؤول المخزن"
#. module: exp_employee_custody
#: model:ir.model.fields,field_description:exp_employee_custody.field_custom_employee_custody__website_message_ids
#: model:ir.model.fields,field_description:exp_employee_custody.field_hr_custody_receiving__website_message_ids
msgid "Website Messages"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields,help:exp_employee_custody.field_custom_employee_custody__website_message_ids
#: model:ir.model.fields,help:exp_employee_custody.field_hr_custody_receiving__website_message_ids
msgid "Website communication history"
msgstr ""
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#, python-format
msgid "You can not delete record in state not in draft"
msgstr "لا يمكن حذف السجل اذا كان في حالة غير مبدئي"
#. module: exp_employee_custody
#: model:ir.model,name:exp_employee_custody.model_employee_custody_line
msgid "employee.custody.line"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model,name:exp_employee_custody.model_employee_return_custody_line
msgid "employee.return.custody.line"
msgstr ""
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.receiving_employee_custody_form_view
msgid "line"
msgstr "بند"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "receiving_custody"
msgstr ""
#. module: exp_employee_custody
#: code:addons/exp_employee_custody/models/employee_custody.py:0
#: code:addons/exp_employee_custody/models/receiving_employee_custody.py:0
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__submit
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__submit
#, python-format
msgid "send"
msgstr "إرسال"
#. module: exp_employee_custody
#: model_terms:ir.ui.view,arch_db:exp_employee_custody.employee_custody_form_view
msgid "submit"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__direct
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__direct
msgid "المدير المباشر"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__refuse
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__refuse
msgid "رفض"
msgstr ""
#. module: exp_employee_custody
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__custom_employee_custody__state__draft
#: model:ir.model.fields.selection,name:exp_employee_custody.selection__hr_custody_receiving__state__draft
msgid "مسودة"
msgstr ""

View File

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

View File

@ -0,0 +1,92 @@
from odoo import models, fields, api, _, exceptions
from odoo import SUPERUSER_ID
from odoo.exceptions import ValidationError
# from datetime import datetime , date
class EmployeeCustody(models.Model):
_name = 'custom.employee.custody'
_rec_name = 'employee_id'
_description = 'Employee custody'
_inherit = ['mail.thread', 'mail.activity.mixin']
current_date = fields.Date(default=lambda self: fields.Date.today())
from_hr_department = fields.Boolean()
employee_no = fields.Char(related="employee_id.emp_no", readonly=True)
note = fields.Text()
state = fields.Selection(selection=[
("draft", _("Draft")),
("submit", _("send")),
("direct", _("Direct Manager")),
("admin", _("Human Resources Manager")),
("approve", _("Warehouse Keeper")),
("done", _("Return Done")),
("refuse", _("Refuse"))
], default='draft')
# Relational fields
receiving_custody = fields.Many2one('hr.custody.receiving')
custody_line_ids = fields.One2many('employee.custody.line', 'employee_custody_line')
employee_id = fields.Many2one('hr.employee', 'Employee', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
department_id = fields.Many2one(related="employee_id.department_id", readonly=True)
job_id = fields.Many2one(related="employee_id.job_id", readonly=True)
country_id = fields.Many2one(related="employee_id.country_id", readonly=True)
company_id = fields.Many2one(related="employee_id.company_id", store=True)
def draft(self):
self.state = "draft"
def submit(self):
self.state = "submit"
def direct(self):
self.state = "direct"
def admin(self):
self.state = "admin"
def approve(self):
self.state = "approve"
def done(self):
self.state = "done"
def refuse(self):
self.state = "refuse"
def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid), ('state', '=', 'open')], limit=1)
if employee_id:
return employee_id.id
else:
return False
def unlink(self):
for i in self:
if i.state != 'draft':
raise ValidationError(_('You can not delete record in state not in draft'))
return super(EmployeeCustody, self).unlink()
# EmployeeCustody()
class EmployeeCustodyLine(models.Model):
_name = 'employee.custody.line'
name = fields.Char()
serial = fields.Char()
quantity = fields.Float()
receiving_quantity = fields.Float()
note = fields.Char()
receiving_date = fields.Date()
amount = fields.Float()
# Relational fields
employee_custody_line = fields.Many2one('custom.employee.custody') # Inverse field
# EmployeeCustodyLine()

View File

@ -0,0 +1,252 @@
from odoo import models, fields, api, _, exceptions
from odoo import SUPERUSER_ID
from datetime import datetime, date
import calendar
from pprint import pprint
from odoo.exceptions import ValidationError
class EmployeeReceiveCustody(models.Model):
_name = 'hr.custody.receiving'
_inherit = ['mail.thread', 'mail.activity.mixin']
_rec_name = 'employee_id'
_description = 'Receiving custody'
current_date = fields.Date(default=lambda self: fields.Date.today())
from_hr_department = fields.Boolean()
employee_no = fields.Char(related="employee_id.emp_no", readonly=True)
note = fields.Text()
deduction_amount = fields.Float()
salary_rule_flag = fields.Boolean()
state = fields.Selection(selection=[
("draft", _("Draft")),
("submit", _("send")),
("direct", _("Direct Manager")),
("admin", _("Human Resources Manager")),
("approve", _("Warehouse Keeper")),
("done", _("Return Done")),
("refuse", _("Refuse"))
], default='draft')
call_compute_function = fields.Char(compute='_get_custody_line_domain')
# Relational fields
department_id = fields.Many2one(related="employee_id.department_id", readonly=True)
job_id = fields.Many2one(related="employee_id.job_id", readonly=True)
country_id = fields.Many2one(related="employee_id.country_id", readonly=True)
return_custody_line_ids = fields.One2many('employee.return.custody.line', 'employee_return_custody_line_id',
store=True)
employee_id = fields.Many2one('hr.employee', 'Employee', default=lambda item: item.get_user_id())
salary_rule_id = fields.Many2one('hr.salary.rule', domain=['|', ('category_id.rule_type', '=', 'deduction'),
('category_id.name', '=', 'Deduction')])
advantage_line_id = fields.Many2one('contract.advantage') # To save advantage line
def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
if employee_id:
return employee_id.id
else:
return False
@api.depends('employee_id')
def _get_custody_line_domain(self):
for item in self:
item.return_custody_line_ids = [(0, 0, val) for val in []]
if item.employee_id:
employee_custody = self.env['custom.employee.custody'].search(
[('employee_id', '=', item.employee_id.id), ('state', 'in', ['approve', 'done'])])
items = []
for record in employee_custody:
if ((item.state == 'done' and record.state == 'done') and (
record.receiving_custody.id == item.id)) or record.state == 'approve':
for line in record.custody_line_ids:
if line.quantity - line.receiving_quantity > 0 and line.amount == 0:
items.append({
'name': line.name,
'serial': line.serial,
'employee_return_custody_line_id': item.id,
'quantity': line.quantity - line.receiving_quantity,
'note': line.note,
'custody_line_id': line.id})
item.return_custody_line_ids = [(0, 0, val) for val in items]
item.call_compute_function = ""
# Re-fill receive custody lines
def re_fill_receive_custody_lines(self):
for item in self:
item.return_custody_line_ids = False
if item.employee_id:
employee_custody = self.env['custom.employee.custody'].search(
[('employee_id', '=', item.employee_id.id), ('state', 'in', ['approve', 'done'])])
items = []
for record in employee_custody:
if ((item.state == 'done' and record.state == 'done') and (
record.receiving_custody.id == item.id)) or record.state == 'approve':
for line in record.custody_line_ids:
if line.quantity - line.receiving_quantity > 0 and line.amount == 0:
items.append({
'name': line.name,
'serial': line.serial,
'employee_return_custody_line_id': item.id,
'quantity': line.quantity - line.receiving_quantity,
'note': line.note,
'custody_line_id': line.id})
item.return_custody_line_ids = [(0, 0, val) for val in items]
@api.onchange('return_custody_line_ids')
def compute_deduction_amount(self):
total_amount = 0.0
for item in self:
item.salary_rule_flag = False
for line in item.return_custody_line_ids:
total_amount += line.deduction_amount
item.deduction_amount = total_amount
# salary_rule_flag Flag do visible salary rule
if item.deduction_amount > 0.0:
item.salary_rule_flag = True
def set_to_draft(self):
for item in self:
if item.employee_id and item.state == 'done':
employee_custody = self.env['custom.employee.custody'].search(
[('employee_id', '=', item.employee_id.id), ('state', 'in', ['done', 'approve'])])
for line in employee_custody:
for element in self.return_custody_line_ids:
for custody in line.custody_line_ids:
if custody.receiving_quantity > 0.0:
line.state = 'approve'
if element.custody_line_id.id == custody.id:
if custody.receiving_quantity - element.quantity >= 0:
custody.receiving_quantity = custody.receiving_quantity - element.quantity
custody.amount = 0.0
else:
raise ValidationError(_('Receiving quantity can not be negative value '))
# Remove contract advantage line when re-draft
if item.advantage_line_id:
item.advantage_line_id.unlink()
self.state = 'draft'
def send(self):
self.state = 'submit'
def dr_manager(self):
self.state = 'direct'
def dr_hr_manager(self):
self.state = 'admin'
def done(self):
for item in self:
# If return any custody quantity fill it in receiving quantity
for line in item.return_custody_line_ids:
if (line.custody_line_id.receiving_quantity + line.quantity) > line.custody_line_id.quantity:
raise ValidationError(_('Receiving quantity can not be greater than original quantity'))
else:
line.custody_line_id.receiving_quantity = line.custody_line_id.receiving_quantity + line.quantity
line.custody_line_id.amount = line.deduction_amount
if line.custody_line_id.receiving_quantity < 0.0:
raise ValidationError(_('Receiving quantity can not be negative value '))
if item.employee_id:
custody_not_complete = 0.0
employee_custody = self.env['custom.employee.custody'].search(
[('employee_id', '=', item.employee_id.id), ('state', '=', 'approve')])
for record in employee_custody:
record.write({
'receiving_custody': item.id,
})
# Check all employee custody line are completed the change state to done
for record in employee_custody:
for line in record.custody_line_ids:
if line.receiving_quantity != line.quantity and line.amount == 0.0:
custody_not_complete += 1
if custody_not_complete == 0:
record.state = 'done'
# Move deduction amount to employee contract advantage lines
if item.employee_id.contract_id:
if item.deduction_amount and item.salary_rule_id:
contract = item.employee_id.contract_id
# get start and end date of the current month
current_date = date.today()
month_start = date(current_date.year, current_date.month, 1)
month_end = date(current_date.year, current_date.month, calendar.mdays[current_date.month])
advantage_line_id = self.env['contract.advantage'].create({
'benefits_discounts': item.salary_rule_id.id,
'type': 'customize',
'date_from': month_start,
'date_to': month_end,
'amount': item.deduction_amount,
'contract_advantage_id': contract.id,
})
item.advantage_line_id = advantage_line_id.id
else:
raise ValidationError(_('Employee "%s" has not contract !') % item.employee_id.name)
item.state = 'done'
def warehouse_keeper(self):
self.state = 'approve'
def refuse(self):
self.state = 'refuse'
# Override create function
# make sure the one2many return_custody_line_ids save changes when create and updates
# @api.model
# def create(self , values):
# deduction_amount = values.get('return_custody_line_ids')
# deduction_amount_list = []
# quantity_list = []
#
# for line in deduction_amount:
# deduction_amount_list.append(line[2]['deduction_amount'])
# quantity_list.append(line[2]['quantity'])
# print(deduction_amount)
# print(deduction_amount_list)
# res = super(EmployeeReceiveCustody ,self).create(values)
#
# index = 0
# for element in res.return_custody_line_ids:
# element.deduction_amount = deduction_amount_list[index]
# element.quantity = quantity_list[index]
# index +=1
#
# print(quantity_list)
# return res
# Override unlink function
def unlink(self):
for i in self:
if i.state != 'draft':
raise ValidationError(_('You can not delete record in state not in draft'))
return super(EmployeeReceiveCustody, self).unlink()
class EmployeeReturnCustodyLine(models.Model):
_name = 'employee.return.custody.line'
_rec_name = 'name'
name = fields.Char()
serial = fields.Char()
quantity = fields.Float()
note = fields.Char()
deduction_amount = fields.Float()
# Relational fields
employee_return_custody_line_id = fields.Many2one(comodel_name='hr.custody.receiving') # inverse field
custody_line_id = fields.Many2one('employee.custody.line') # to save custody_id

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<record id="employee_custody_rule_comp_rule" model="ir.rule">
<field name="name">Employee custody multi company rule</field>
<field name="model_id" ref="model_custom_employee_custody"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="custom_employee_custody_emp_rule" model="ir.rule">
<field name="name">Employee: views custody</field>
<field name="model_id" ref="model_custom_employee_custody"/>
<field name="domain_force">[('employee_id.user_id','=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="custom_employee_custody_division_mgr_rule" model="ir.rule">
<field name="name">Division manager: views custody of its subordinates</field>
<field name="model_id" ref="model_custom_employee_custody"/>
<field name="domain_force">['|',('employee_id.parent_id.user_id','=', user.id),('employee_id.coach_id.user_id','=', user.id)]</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager')),]"/>
</record>
<record id="custom_employee_custody_hr_rule" model="ir.rule">
<field name="name">Allow HR : views custody of all employees</field>
<field name="model_id" ref="model_custom_employee_custody"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_base.group_executive_manager')),
(4, ref('hr_base.group_general_manager')),
(4, ref('hr.group_hr_manager')),
(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="hr_custody_receiving_emp_rule" model="ir.rule">
<field name="name">Employee: views its custody receiving records</field>
<field name="model_id" ref="model_hr_custody_receiving"/>
<field name="domain_force">[('employee_id.user_id','=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_custody_receiving_division_mgr_rule" model="ir.rule">
<field name="name">Division manager: views custody receiving records of its subordinates</field>
<field name="model_id" ref="model_hr_custody_receiving"/>
<field name="domain_force">['|',('employee_id.parent_id.user_id','=', user.id),('employee_id.coach_id.user_id','=', user.id)]</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager')),]"/>
</record>
<record id="hr_custody_receiving_hr_rule" model="ir.rule">
<field name="name">Allow HR : views custody receiving records of all employees</field>
<field name="model_id" ref="model_hr_custody_receiving"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(3, ref('hr_base.group_account_manager')),
(4, ref('hr_base.group_executive_manager')),
(4, ref('hr_base.group_general_manager')),
(4, ref('hr.group_hr_manager')),
(4, ref('hr.group_hr_user'))]"/>
</record>
</data>
</odoo>

View File

@ -0,0 +1,6 @@
id,name,model_id:id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_hr_custody_receiving,access_hr_custody_receiving,exp_employee_custody.model_hr_custody_receiving,base.group_user,1,0,0,0
access_hr_custody_receiving_emp,hr.custody.receiving.emp,exp_employee_custody.model_hr_custody_receiving,base.group_user,1,1,1,1
access_employee_custody,access_employee_custody,exp_employee_custody.model_custom_employee_custody,base.group_user,1,1,1,1
access_employee_custody_line,access_employee_custody_line,exp_employee_custody.model_employee_custody_line,base.group_user,1,1,1,1
access_employee_return_custody_emp,Employee.return.custody.line.emp,exp_employee_custody.model_employee_return_custody_line,base.group_user,1,1,1,1
1 id name model_id:id group_id/id perm_read perm_write perm_create perm_unlink
2 access_hr_custody_receiving access_hr_custody_receiving exp_employee_custody.model_hr_custody_receiving base.group_user 1 0 0 0
3 access_hr_custody_receiving_emp hr.custody.receiving.emp exp_employee_custody.model_hr_custody_receiving base.group_user 1 1 1 1
4 access_employee_custody access_employee_custody exp_employee_custody.model_custom_employee_custody base.group_user 1 1 1 1
5 access_employee_custody_line access_employee_custody_line exp_employee_custody.model_employee_custody_line base.group_user 1 1 1 1
6 access_employee_return_custody_emp Employee.return.custody.line.emp exp_employee_custody.model_employee_return_custody_line base.group_user 1 1 1 1

View File

@ -0,0 +1,126 @@
<?xml version="1.0"?>
<odoo>
<data>
<record model="ir.actions.act_window" id="employee_custody_action">
<field name="name">Employee Custody</field>
<field name="res_model">custom.employee.custody</field>
<field name="view_mode">list,form</field>
</record>
<record model="ir.ui.view" id="employee_custody_form_view">
<field name="name">Employee Custody</field>
<field name="model">custom.employee.custody</field>
<field name="arch" type="xml">
<form>
<header>
<button name="submit" string="submit" class="oe_highlight" type="object"
invisible="state != 'draft'"
groups="base.group_user"/>
<button name="direct" string="Direct Manager" class="oe_highlight" type="object"
invisible="state != 'submit'"
groups="hr_base.group_division_manager"/>
<button name="refuse" string="Refuse" class="oe_highlight" type="object"
invisible="state != 'submit'"
groups="hr_base.group_division_manager"/>
<button name="admin" string="Human Resources Manager" class="oe_highlight" type="object"
invisible="state != 'direct'"
groups="hr.group_hr_manager"/>
<button name="refuse" string="Refuse" class="oe_highlight" type="object"
invisible="state != 'direct'"
groups="hr.group_hr_manager"/>
<button name="approve" string="Warehouse Keeper" class="oe_highlight" type="object"
invisible="state != 'admin'"
groups="hr_base.group_general_manager,hr_base.group_executive_manager"/>
<button name="refuse" string="Refuse" class="oe_highlight" type="object"
invisible="state != 'admin'"
groups="hr_base.group_general_manager,hr_base.group_executive_manager"/>
<button name="done" string="Return Done" class="oe_highlight" type="object"
invisible="state != 'approve'"
groups="hr.group_hr_user"/>
<button name="refuse" string="Refuse" class="oe_highlight" type="object"
invisible="state != 'approve'"
groups="hr.group_hr_user"/>
<button name="draft" string="Rest To Draft" class="oe_highlight" type="object"
invisible="state != 'done'"
groups="hr.group_hr_user"/>
<button name="draft" string="Rest To Draft" class="oe_highlight" type="object"
invisible="state != 'refuse'"
groups="hr.group_hr_user"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group>
<field name="current_date" string="Date" required="1"
readonly="state != 'draft'"/>
<field name="from_hr_department" string="Other Employee"
readonly="state != 'draft'"/>
<field name="employee_id" string="Employee"
readonly="from_hr_department == False"
required="True"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
</group>
<group>
<field name="department_id" string="Department" readonly="1"/>
<field name="job_id" string="Job Title" readonly="1"/>
<field name="country_id" string="Nationality" readonly="1"/>
<field name="receiving_custody" string="receiving_custody" invisible="1"/>
</group>
</group>
<notebook>
<page string="Custody Lines">
<field name="custody_line_ids"
readonly="state != 'draft'">
<list string="Custody Lines" editable="top">
<field name="name" required="1" string="Description"/>
<field name="serial" string="Identification code" groups="hr.group_hr_user,hr_base.group_general_manager,hr_base.group_executive_manager"/>
<field name="quantity" required="1" string="Quantity"/>
<field name="receiving_quantity" readonly="1" string="Receiving Quantity"/>
<field name="note" string="Notes"/>
<field name="receiving_date" string="Date Delivering"/>
<field name="amount" string="Amount" readonly="1" groups="hr.group_hr_user,hr_base.group_general_manager,hr_base.group_executive_manager"/>
</list>
</field>
</page>
</notebook>
<field name="note"/>
</sheet>
<!--Discuss widgets for history and communication -->
<chatter/>
</form>
</field>
</record>
<record model="ir.ui.view" id="employee_custody_tree_view">
<field name="name">Employee Custody</field>
<field name="model">custom.employee.custody</field>
<field name="arch" type="xml">
<list decoration-danger="state == 'refuse'" decoration-info="state == 'draft'" string="Employee Custody">
<field name="current_date" string="Date"/>
<field name="employee_id" string="Employee"/>
<field name="department_id" string="Department"/>
<field name="state" string="Status"/>
</list>
</field>
</record>
<menuitem name="Custody" id="custody_submenu"
parent="employee_requests.employee_request_menu_item" sequence="11"/>
<menuitem name="Employee Custody" id="employee_custody"
parent="custody_submenu" action="employee_custody_action"/>
</data>
</odoo>

View File

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<odoo>
<data>
<record model="ir.actions.act_window" id="receiving_employee_custody_action">
<field name="name">Receiving Employee Custody</field>
<field name="res_model">hr.custody.receiving</field>
<field name="view_mode">list,form</field>
</record>
<record model="ir.ui.view" id="receiving_employee_custody_form_view">
<field name="name">Receiving Employee Custody</field>
<field name="model">hr.custody.receiving</field>
<field name="arch" type="xml">
<form>
<header>
<button string="Submit" type="object" name="send" class="oe_highlight" invisible="state != 'draft'"
groups="base.group_user"/>
<button string="Directed Manager" type="object" name="dr_manager" class="oe_highlight"
invisible="state != 'submit'"
groups="hr_base.group_division_manager"/>
<button string="HR Manager" type="object" name="dr_hr_manager" class="oe_highlight"
invisible="state != 'direct'"
groups="hr.group_hr_user"/>
<button string="Warehouse keeper" type="object" name="warehouse_keeper" class="oe_highlight"
invisible="state != 'admin'"
groups="hr_base.group_general_manager,hr_base.group_executive_manager"/>
<button string="Return Done" type="object" name="done" class="oe_highlight" invisible="state != 'approve'"
groups="hr.group_hr_user"/>
<button string="Refuse" type="object" name="refuse" class="oe_highlight"
invisible="state in ('draft','done','refuse')"
groups="hr_base.group_division_manager,hr.group_hr_user"/>
<button name="set_to_draft" string="Set to draft" class="oe_highlight" type="object"
invisible="state != 'refuse'"
groups="hr.group_hr_user"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group string="Employee Info">
<field name="from_hr_department" string="Other Employee"
readonly="state != 'draft'"/>
<field name="employee_id" string="Employee"
readonly="from_hr_department == False"
required="from_hr_department == True"
/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="job_id" string="Job Title" readonly="1"/>
<field name="department_id" string="Department" readonly="1"/>
<field name="country_id" string="Nationality" readonly="1"/>
</group>
<group string="Receiving Info">
<field name="current_date" string="Date" required="1"
readonly="state != 'draft'"/>
<field name="deduction_amount" string="Deduction Amount"
readonly="1" force_save="1"/>
<field name="salary_rule_id" string="Salary rule"
invisible="salary_rule_flag == False"
readonly="state != 'draft'"
required="salary_rule_flag == True"
/>
<field name="salary_rule_flag" string="Salary rule flag" invisible="1"/>
<field name="advantage_line_id" string="Save contract advantage line" invisible="1"/>
</group>
</group>
<group>
<button name="re_fill_receive_custody_lines" string="Re-fill" icon="fa-cogs"
type="object" readonly="state != 'draft'"/>
</group>
<separator string="Return Lines"/>
<field name="return_custody_line_ids" readonly="state != 'draft'">
<list editable="top">
<field name="name" string="Statement of Custody" readonly="1" force_save="1" store="1"/>
<field name="serial" readonly="1"/>
<field name="quantity" force_save="1"/>
<field name="note" readonly="1"/>
<field name="deduction_amount" force_save="1" store="1"/>
<field name="custody_line_id" string="line" invisible="1"/> <!--to save custody id-->
</list>
</field>
<field name="note" string="Note" readonly="state != 'draft'"
placeholder="Add Comments here ...."/>
<group>
<field name="call_compute_function" string="Invisible field to Call compute function"
invisible="1"/>
</group>
</sheet>
<chatter/>
</form>
</field>
</record>
<record model="ir.ui.view" id="receiving_employee_custody_tree_view">
<field name="name">Receiving Employee Custody</field>
<field name="model">hr.custody.receiving</field>
<field name="arch" type="xml">
<list decoration-danger="state == 'refuse'" decoration-info="state == 'draft'" string="Receiving Employee Custody">
<field name="current_date" string="Date"/>
<field name="employee_id" string="Employee"/>
<field name="department_id" string="Department"/>
<!--field name="job_id" string="Job Title"/-->
<field name="deduction_amount"/>
<field name="state" string="Status"/>
</list>
</field>
</record>
<menuitem name="Receiving Employee Custody" id="receiving_employee_custody"
parent="custody_submenu" action="receiving_employee_custody_action"/>
</data>
</odoo>