diff --git a/odex25_purchase/odex25_evaluation_eriteria/__init__.py b/odex25_purchase/odex25_evaluation_eriteria/__init__.py new file mode 100644 index 000000000..a24914bff --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models +from . import wizard \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/__manifest__.py b/odex25_purchase/odex25_evaluation_eriteria/__manifest__.py new file mode 100644 index 000000000..ea6f9c9a6 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/__manifest__.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Evaluation Eriteria", + + 'summary': """ + Short (1 phrase/line) summary of the module's purpose, used as + subtitle on modules listing or apps.openerp.com""", + + 'description': """ + Long description of module's purpose + """, + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Uncategorized', + 'version': '0.1', + 'depends': ['base','purchase_requisition_custom'], + 'data': [ + 'security/ir.model.access.csv', + 'security/groups.xml', + 'views/views.xml', + 'wizard/intial_evaluation_wizard.xml', + 'wizard/final_evaluation_wizard.xml', + 'reports/initial_evaluation_view.xml', + 'reports/initial_evaluation_report.xml', + 'reports/final_evaluation_view.xml', + 'reports/final_evaluation_report.xml', + ], + 'demo': [ + 'demo/demo.xml', + ], +} diff --git a/odex25_purchase/odex25_evaluation_eriteria/controllers/__init__.py b/odex25_purchase/odex25_evaluation_eriteria/controllers/__init__.py new file mode 100644 index 000000000..457bae27e --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/controllers/controllers.py b/odex25_purchase/odex25_evaluation_eriteria/controllers/controllers.py new file mode 100644 index 000000000..f440cff66 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/controllers/controllers.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from odoo import http +from odoo.http import request + diff --git a/odex25_purchase/odex25_evaluation_eriteria/demo/demo.xml b/odex25_purchase/odex25_evaluation_eriteria/demo/demo.xml new file mode 100644 index 000000000..fdbc3ae5a --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/demo/demo.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/i18n/ar_001.po b/odex25_purchase/odex25_evaluation_eriteria/i18n/ar_001.po new file mode 100644 index 000000000..f42b45ef5 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/i18n/ar_001.po @@ -0,0 +1,778 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex25_evaluation_eriteria +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-29 10:07+0000\n" +"PO-Revision-Date: 2025-04-29 10:07+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: odex25_evaluation_eriteria +#: model:ir.actions.report,print_report_name:odex25_evaluation_eriteria.initial_evaluation_pdf_action +#: model:ir.actions.report,print_report_name:odex25_evaluation_eriteria.initial_evaluation_view_action +msgid "'Initial Evaluation'" +msgstr "التقييم المبدئي" + +#. module: odex25_evaluation_eriteria +#: model:ir.actions.report,print_report_name:odex25_evaluation_eriteria.final_evaluation_pdf_action +#: model:ir.actions.report,print_report_name:odex25_evaluation_eriteria.final_evaluation_view_action +msgid "'final Evaluation'" +msgstr "التقييم النهائي" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "090,000.00" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "1,426%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "126,000.00" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "2,090%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "2,267%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "396,35" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "70%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "75%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "82%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "85%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "88%" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "Not Member" +msgstr "ليس عضوا" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "الاسم" +msgstr "الاسم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "الدور" +msgstr "الدور" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "" +"العرض المقدم\n" +"
\n" +" (شامل الضريبه)" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "المقيم" +msgstr "المقييم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "AS05-F02 Page 1 of 1 OE-2022 Rev. (1)" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__attachment_ids +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__attachment_ids +msgid "Attachments" +msgstr "المرفقات" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type__available_types +msgid "Available Types" +msgstr "الانواع المتاحة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_order__avg_evaluation +msgid "Average Evaluation" +msgstr "متوسط التقييم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_wizard_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_wizard_view +msgid "Cancel" +msgstr "الغاء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__committee_member +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__committee_member +msgid "Committee Member" +msgstr "عضو اللجنة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_order__committee_members +msgid "Committee Members" +msgstr "اعضاء اللجان" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_requisition__committee_type_id +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_select_reason__purchase_committee_type +msgid "Committee Type" +msgstr "نوع اللجنة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__create_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__create_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__create_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__create_uid +msgid "Created by" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__create_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__create_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__create_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__create_date +msgid "Created on" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__degree +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__degree +msgid "Degree" +msgstr "الدرجة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__hr_department_id +msgid "Department" +msgstr "الادارة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__display_name +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__display_name +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__display_name +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__display_name +msgid "Display Name" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__end_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__end_date +msgid "End Date" +msgstr "تاريخ النهاية" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__evaluation +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__evaluation +msgid "Evaluation" +msgstr "التقييم" + +#. module: odex25_evaluation_eriteria +#: code:addons/odex25_evaluation_eriteria/models/models.py:0 +#, python-format +msgid "Evaluation can't be greater than Degree" +msgstr "لا يمكن أن تكون التقييمات أكبر من الدرجة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__evaluation_criteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__evaluation_criteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.purchase_committe_type_form_view_inherit +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.select_reason_wizard_view_inherit +msgid "Evaluation criteria" +msgstr "معايير التقييم" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_final_evaluation_wizard +msgid "Final Evaluation Wizard" +msgstr "التقييم النهائي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__id +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__id +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__id +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__id +msgid "ID" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_initial_evaluation_criteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_order__initial_evaluation_lines +msgid "Initial Evaluation Criteria" +msgstr "معايير التقييم المدئي" + +#. module: odex25_evaluation_eriteria +#: model:ir.actions.act_window,name:odex25_evaluation_eriteria.initial_evaluation_wizard_action +#: model:ir.actions.report,name:odex25_evaluation_eriteria.initial_evaluation_pdf_action +#: model:ir.actions.report,name:odex25_evaluation_eriteria.initial_evaluation_view_action +#: model:ir.ui.menu,name:odex25_evaluation_eriteria.initial_evaluation_wizard_menu +msgid "Initial Evaluation Report" +msgstr "تقرير التقييم المبدئي" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.inherit_purchase_order_form +msgid "Initial Evaluation criteria" +msgstr "معايير التقييم المبدئي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard____last_update +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria____last_update +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard____last_update +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__write_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__write_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__write_uid +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__write_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__write_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__write_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__final_evaluation_wizard__role_type__manager +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__initial_evaluation_wizard__role_type__manager +msgid "Manager" +msgstr "رئيس اللجنة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__final_evaluation_wizard__role_type__member +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__initial_evaluation_wizard__role_type__member +msgid "Member" +msgstr "العضو" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__user_id +msgid "Member Name" +msgstr "اسم العضو" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_committee_type__available_types__operational +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_requisition__type__operational +msgid "Operational" +msgstr "تشغيلى" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__move_ids +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__move_ids +msgid "Orders" +msgstr "الطلبات" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_wizard_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_wizard_view +msgid "Pdf" +msgstr "بي دي اف" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__po_id +msgid "Po" +msgstr "امر اشراء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_committee_type__available_types__project +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_requisition__type__project +msgid "Project" +msgstr "المشروع" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__purchase_requisition +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__purchase_requisition +msgid "Purchase Agreement" +msgstr "اتفاقية الشراء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__purchase_committee_type +msgid "Purchase Committee Type" +msgstr "نوع اللجنة" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type__purchase_committee_type_line +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_select_reason__purchase_committee_type_line +msgid "Purchase Committee Type Line" +msgstr "نوع لجنة الشراء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_purchase_order +msgid "Purchase Order" +msgstr "أمر شراء" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_wizard_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_wizard_view +msgid "Purchase Report" +msgstr "تقرير المشتريات" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_purchase_requisition +msgid "Purchase Requisition" +msgstr "طلب الشراء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__req_id +msgid "Req" +msgstr "امر شراء مبدئي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__role_type +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__role_type +msgid "Role Type" +msgstr "نوع الدور" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_criteria__sequence +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_committee_type_line__sequence +msgid "Sequence" +msgstr "التسلسل" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__start_date +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__start_date +msgid "Start Date" +msgstr "تاريخ البداية" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_committee_type__available_types__strategic +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__purchase_requisition__type__strategic +msgid "Strategic" +msgstr "استراتيجي" + +#. module: odex25_evaluation_eriteria +#: code:addons/odex25_evaluation_eriteria/models/models.py:0 +#, python-format +msgid "The Sum of all degrees can't be equal or greater than 100" +msgstr "مجموع جميع الدرجات لا يمكن أن يكون مساوٍ أو أكبر من 100" + +#. module: odex25_evaluation_eriteria +#: code:addons/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.py:0 +#: code:addons/odex25_evaluation_eriteria/wizard/intial_evaluation_report.py:0 +#, python-format +msgid "There is No Data to present" +msgstr "لا توجد بيانات لعرضها" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_order__total_evaluation +msgid "Total Evaluation" +msgstr "التقييم الكلي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_purchase_requisition__type +msgid "Type" +msgstr "النوع" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__user_id +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__user_id +msgid "User" +msgstr "المستخدم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_wizard_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_wizard_view +msgid "View" +msgstr "العرض" + +#. module: odex25_evaluation_eriteria +#: code:addons/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.py:0 +#: code:addons/odex25_evaluation_eriteria/wizard/intial_evaluation_report.py:0 +#, python-format +msgid "You Should Select Parameters" +msgstr "لابد من تحديد المعايير" + +#. module: odex25_evaluation_eriteria +#: code:addons/odex25_evaluation_eriteria/models/models.py:0 +#, python-format +msgid "You have already select this Quotation" +msgstr "لقد قمت باختيار هذا العرض بالفعل" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_final_evaluation_wizard__today +#: model:ir.model.fields,field_description:odex25_evaluation_eriteria.field_initial_evaluation_wizard__today +msgid "Your string" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.actions.act_window,name:odex25_evaluation_eriteria.final_evaluation_wizard_action +#: model:ir.actions.report,name:odex25_evaluation_eriteria.final_evaluation_pdf_action +#: model:ir.actions.report,name:odex25_evaluation_eriteria.final_evaluation_view_action +#: model:ir.ui.menu,name:odex25_evaluation_eriteria.final_evaluation_wizard_menu +msgid "final Evaluation Report" +msgstr "تقرير التقييم النهائي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_initial_evaluation_wizard +msgid "initial Evaluation Wizard" +msgstr "التقييم المبدئي" + +#. module: odex25_evaluation_eriteria +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__final_evaluation_wizard__role_type__not_member +#: model:ir.model.fields.selection,name:odex25_evaluation_eriteria.selection__initial_evaluation_wizard__role_type__not_member +msgid "not Member" +msgstr "ليس عضوا" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_purchase_committee_type +msgid "purchase.committee.type" +msgstr "نوع طلب الشراء" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_purchase_committee_type_line +msgid "purchase.committee.type.line" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model:ir.model,name:odex25_evaluation_eriteria.model_select_reason +msgid "select.reason" +msgstr "اختيار السبب" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "إدارة الفروع وخدمات المستفيدين" +msgstr "إدارة الفروع وخدمات المستفيدين" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"إعادة صاحب\n" +" الصالحية :" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "اسم البنـــــــد" +msgstr "اسم البند" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +msgid "اسم البنـــــــف" +msgstr "اسم البند" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "اسم الشركة" +msgstr "اسم الشركة" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "اسم الشركه" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"الأمين\n" +" العام" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "الإدارة المالية" +msgstr "الادارة المالية" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "الإدارة صاحبة الاجتماع :" +msgstr "الادارة صاحبة الاجتماع" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "الاجمالي" +msgstr "الاجمالي" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "الاسم" +msgstr "الاسم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "البقاء المعتمد (حسب الموازنة التقديرية)" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "التاريخ" +msgstr "التاريخ" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "التقييم" +msgstr "التقييم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +msgid "التواجع" +msgstr "التراجع" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "التوقيع" +msgstr "التوقيع" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "الدرجه" +msgstr "الدرجة" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"القيم رئيس\n" +" اللجنة / محمد التقديري" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"القيم عشر\n" +" الجدة / اسم الخبير" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"القيم عشر\n" +" الجدة / محمد الشيوس" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "المبالغ المخلي" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "المبالغ المرتبطة على البقاء سابقا" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "المبلغ" +msgstr "المبلغ" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "المراكز التأهيلية" +msgstr "المراكز التاهيلية" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "المشروع الحالي" +msgstr "المشروع الحالي" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "المعيار" +msgstr "المعيار" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"الموضوع/\n" +" المشروع" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "تأمين مكيفات شيك لسجون سلطة الرياض + سلطة جازان + سلطة مكة البكرسة" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"تقييم\n" +" العروض" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"رئيس اللجنة\n" +" / حمد الحقديري" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.initial_evaluation_report_view +msgid "رقم" +msgstr "رقم" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"شركة حمد\n" +" المنبع وشركة الدخيرة الكهربائية والتكليف" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"شركة نسم\n" +" الهواء للدخيرة الكهربائية" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "صفر بن محمد القرني" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"عضو اللجنة/\n" +" محمد السيجيبي" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"عضو اللجنة/\n" +" محمد المنتهي" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "غير موافق ( )" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "لجنة تحليل التعريض والمنشوبات" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"متوسط\n" +" التقييم" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "مصادقة" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +msgid "" +"مصادقة\n" +" الإدارة المالية" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"مكيفات\n" +" الزامل" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "موافق وتعتمد توصية اللجنة" +msgstr "" + +#. module: odex25_evaluation_eriteria +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_pdf +#: model_terms:ir.ui.view,arch_db:odex25_evaluation_eriteria.final_evaluation_report_view +msgid "" +"ومن خلال مقارنة العروض الثلاثة أعلاه من قبل اللجنة، وبعد تحليل العروض قبل ومثيلاً شبكاً\n" +" للمحايير، فإن اللجنة توصي بالتحاقد مع شركة حمد المنبع وشركة الدخيرة الكهربائية والتكليف\n" +" ، حيث أن عرضهم الأفضل والأنسب قبلاً ومثيلاً." +msgstr "" diff --git a/odex25_purchase/odex25_evaluation_eriteria/models/__init__.py b/odex25_purchase/odex25_evaluation_eriteria/models/__init__.py new file mode 100644 index 000000000..5305644df --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/models/models.py b/odex25_purchase/odex25_evaluation_eriteria/models/models.py new file mode 100644 index 000000000..8fd205e1d --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/models/models.py @@ -0,0 +1,220 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class CommitteeTypesInherit(models.Model): + _inherit = 'purchase.committee.type' + + purchase_committee_type_line = fields.One2many('purchase.committee.type.line', 'purchase_committee_type') + available_types = fields.Selection( + selection=[('project', 'Project'), ('strategic', 'Strategic'), ('operational', 'Operational')], + string="Available Types", + ) + + @api.constrains('purchase_committee_type_line', 'purchase_committee_type_line.degree') + def _check_degree(self): + for rec in self: + if rec.purchase_committee_type_line and sum(rec.purchase_committee_type_line.mapped('degree')) > 100: + raise ValidationError(_("The Sum of all degrees can't be equal or greater than 100")) + + +class CommitteeTypesInheritLine(models.Model): + _name = 'purchase.committee.type.line' + + purchase_committee_type = fields.Many2one('purchase.committee.type') + sequence = fields.Integer(string="Sequence") + evaluation = fields.Float(string="Evaluation") + evaluation_criteria = fields.Char(string="Evaluation criteria") + degree = fields.Float(string="Degree") + + @api.constrains('evaluation') + def _check_evaluation(self): + for rec in self: + if rec.evaluation and rec.degree and rec.evaluation > rec.degree: + raise ValidationError(_("Evaluation can't be greater than Degree")) + + +class PurchaseRequisitionCustomInherit(models.Model): + _inherit = 'purchase.requisition' + + type = fields.Selection([('project', 'Project'), ('operational', 'Operational'), ('strategic', 'Strategic')], + default='operational') + + committee_type_id = fields.Many2one('purchase.committee.type', string='Committee Type', + domain="[('available_types', '=', type)]") + + @api.onchange('type') + def _onchange_type(self): + if self.type: + committees = self.env['purchase.committee.type'].search([('available_types', '=', self.type)]) + if committees: + self.committee_type_id = committees[0] + else: + self.committee_type_id = False + else: + self.committee_type_id = False + + +class PurchaseOrderCustomSelect(models.Model): + _inherit = "purchase.order" + + initial_evaluation_lines = fields.One2many(comodel_name='initial.evaluation.criteria', inverse_name='po_id', + string='Initial Evaluation Criteria', ) + + total_evaluation = fields.Float(string='Total Evaluation', compute='_compute_evaluation') + avg_evaluation = fields.Float(string='Average Evaluation', compute='_compute_evaluation') + + committee_members = fields.Many2many(comodel_name='res.users', compute='_compute_committee_members', + string='Committee Members') + + def analytic_id_poa(self): + print('re = ', self.requisition_id) + for rec in self.order_line: + analytic_account_id = rec.account_analytic_id + return analytic_account_id + + def get_budget_id(self): + budget_id = self.env['budget.confirmation'].search([ + '|', '|', + ('po_id', '=', self.id), + ('ref', '=', self.name), + ('ref', '=', self.requisition_id.name) + ], limit=1) + return budget_id + + def get_remain_last(self): + res = self.get_budget_id() + print('res = ', res) + if res: + for rec in res.lines_ids: + return rec.remain + + def get_band_name(self): + res = self.get_budget_id() + if res: + for rec in res.lines_ids: + res = rec.crossovered_budget_id + for lin in res.crossovered_budget_line: + return lin.general_budget_id.name + + def get_remain(self): + res = self.get_budget_id() + if res: + for rec in res.lines_ids: + res = rec.crossovered_budget_id + for lin in res.crossovered_budget_line: + return lin.remain + + def get_user_approve_budget_id(self): + res = self.get_budget_id() + return res.approved_by_id + + def get_date_approve_budget_id(self): + res = self.get_budget_id() + return res.approved_date + + @api.depends('initial_evaluation_lines', 'initial_evaluation_lines.user_id') + def _compute_committee_members(self): + for rec in self: + members = [] + rec.committee_members = False + if rec.initial_evaluation_lines: + members = rec.initial_evaluation_lines.mapped('user_id') + if members: + rec.committee_members = members.ids + + @api.depends('initial_evaluation_lines', 'initial_evaluation_lines.evaluation') + def _compute_evaluation(self): + for rec in self: + total = 0 + avg = 0 + if rec.initial_evaluation_lines: + evaluations = rec.initial_evaluation_lines.mapped('evaluation') + total = sum(evaluations) + avg = sum(evaluations) / len(evaluations) + rec.total_evaluation = total + rec.avg_evaluation = avg + + def action_select(self): + for member in self.committe_members: + if member.user_id.id == self.env.user.id and member.select == True: + raise ValidationError(_('You have already select this Quotation')) + self.requisition_id.actual_vote += 1 + return { + 'type': 'ir.actions.act_window', + 'name': 'Select Reason', + 'res_model': 'select.reason', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_order_id': self.id, + 'default_purchase_committee_type': self.requisition_id.committee_type_id.id if self.requisition_id else False} + } + + def get_evaluation_summary(self): + member_totals = {} # {member_name: total_evaluation} + for line in self.initial_evaluation_lines: + name = line.user_id.name + member_totals[name] = member_totals.get(name, 0) + line.evaluation + return { + 'members': list(member_totals.keys()), + 'totals': member_totals, + } + + +class SelectReason(models.TransientModel): + _inherit = "select.reason" + + purchase_committee_type = fields.Many2one('purchase.committee.type', string='Committee Type') + purchase_committee_type_line = fields.One2many('purchase.committee.type.line', + related='purchase_committee_type.purchase_committee_type_line', + readonly=False) + + def action_select(self): + self.env['committe.member'].create({ + 'po_id': self.order_id, + 'user_id': self.env.user.id, + 'selection_reason': self.select_reason, + 'select': True}) + order_id = self.env['purchase.order'].browse(self.order_id) + order_id.select = True + + for rec in self.purchase_committee_type_line: + self.env['initial.evaluation.criteria'].create({ + 'po_id': self.order_id, + 'user_id': self.env.user.id, + 'evaluation_criteria': rec.evaluation_criteria, + 'evaluation': rec.evaluation, + 'degree': rec.degree + }) + rec.evaluation = 0.0 + + +class InitialEvaluationCriteria(models.Model): + _name = "initial.evaluation.criteria" + _description = "Initial Evaluation Criteria" + + po_id = fields.Many2one('purchase.order') + req_id = fields.Many2one('purchase.request') + user_id = fields.Many2one('res.users', "Member Name") + sequence = fields.Integer(string="Sequence") + evaluation_criteria = fields.Char(string="Evaluation criteria") + evaluation = fields.Float(string="Evaluation") + degree = fields.Float(string="Degree") + + +class BudgetConfirmation(models.Model): + _inherit = 'budget.confirmation' + # add user sign + approved_by_id = fields.Many2one('res.users', string='Approved By') + approved_date = fields.Date(string='Approval Date') + + def confirm(self): + """ + change state to confirm and check budget + """ + super(BudgetConfirmation, self).confirm() + # add user sign + self.approved_by_id = self.env.user + self.approved_date = fields.Date.today() + # end diff --git a/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_report.xml b/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_report.xml new file mode 100644 index 000000000..fc464a77d --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_report.xml @@ -0,0 +1,354 @@ + + + + + + final Evaluation Report + final.evaluation.wizard + qweb-pdf + odex25_evaluation_eriteria.final_evaluation_report_pdf + odex25_evaluation_eriteria.final_evaluation_report_pdf + + 'final Evaluation' + report + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_view.xml b/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_view.xml new file mode 100644 index 000000000..6fedd2e23 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/reports/final_evaluation_view.xml @@ -0,0 +1,355 @@ + + + + + + final Evaluation Report + final.evaluation.wizard + qweb-html + odex25_evaluation_eriteria.final_evaluation_report_view + odex25_evaluation_eriteria.final_evaluation_report_view + + 'final Evaluation' + report + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_report.xml b/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_report.xml new file mode 100644 index 000000000..7e07b41df --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_report.xml @@ -0,0 +1,217 @@ + + + + + + Initial Evaluation Report + initial.evaluation.wizard + qweb-pdf + odex25_evaluation_eriteria.initial_evaluation_report_pdf + odex25_evaluation_eriteria.initial_evaluation_report_pdf + + report + + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_view.xml b/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_view.xml new file mode 100644 index 000000000..7405a225e --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/reports/initial_evaluation_view.xml @@ -0,0 +1,222 @@ + + + + + + Initial Evaluation Report + initial.evaluation.wizard + qweb-html + odex25_evaluation_eriteria.initial_evaluation_report_view + odex25_evaluation_eriteria.initial_evaluation_report_view + + 'Initial Evaluation' + report + + + + + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/security/groups.xml b/odex25_purchase/odex25_evaluation_eriteria/security/groups.xml new file mode 100644 index 000000000..1e3ce051a --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/security/groups.xml @@ -0,0 +1,18 @@ + + + + + See your employee Evaluation + + + [(1,'=',1)] + + + + See your own evaluation + + + [('user_id', '=', user.id)] + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/security/ir.model.access.csv b/odex25_purchase/odex25_evaluation_eriteria/security/ir.model.access.csv new file mode 100644 index 000000000..9b56eb183 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_purchase_committee_type_line,committee.type.line,model_purchase_committee_type_line,,1,1,1,1 +access_initial_evaluation_criteria,initial.evaluation.criteria,model_initial_evaluation_criteria,,1,1,1,1 +access_initial_evaluation_wizard,initial.evaluation.wizard,model_initial_evaluation_wizard,,1,1,1,1 +access_final_evaluation_wizard,final.evaluation.wizard,model_final_evaluation_wizard,,1,1,1,1 + + diff --git a/odex25_purchase/odex25_evaluation_eriteria/views/views.xml b/odex25_purchase/odex25_evaluation_eriteria/views/views.xml new file mode 100644 index 000000000..2fa15b67a --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/views/views.xml @@ -0,0 +1,92 @@ + + + purchase.committe.type.inherit + purchase.committee.type + + + + + + + + + + + + + + + + + + + + + + inherit_purchase_order_form + purchase.order + + + + + + + + + + + + + + + + + + + + + + + + + + + select_reason_wizard_view_inherit + select.reason + + + + + + + + + + + + + + + + + + + + + + + + + + view_budget_confirmation_form_extend + budget.confirmation + + + + + + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/wizard/__init__.py b/odex25_purchase/odex25_evaluation_eriteria/wizard/__init__.py new file mode 100644 index 000000000..16aa43821 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/wizard/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import intial_evaluation_report +from . import final_evaluation_wizard \ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.py b/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.py new file mode 100644 index 000000000..4157f67a1 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.py @@ -0,0 +1,84 @@ +from datetime import date, datetime +from odoo.exceptions import ValidationError +from odoo import api, fields, models, _ + + +class FinalEvaluationWizard(models.TransientModel): + _name = 'final.evaluation.wizard' + _description = 'Final Evaluation Wizard' + + start_date = fields.Date('Start Date') + end_date = fields.Date('End Date') + purchase_requisition = fields.Many2many(comodel_name='purchase.requisition', string='Purchase Agreement') + committee_member = fields.Many2one(comodel_name='res.users', string='Committee Member') + hr_department_id = fields.Many2one(comodel_name='hr.department', string='Department') + move_ids = fields.Many2many('purchase.order', string='Orders') + today = fields.Date(string='Your string', default=lambda self: fields.Date.today()) + role_type = fields.Selection(string='Role Type',selection=[('manager', 'Manager'), ('member', 'Member'), ('not_member', 'not Member') ], compute='_compute_role_type') + user_id = fields.Many2one('res.users', string="User", default=lambda self: self.env.user) + + @api.depends('user_id') + def _compute_role_type(self): + if self.user_id: + self.role_type = 'not_member' + all_committees = self.env['purchase.committee.type'].search([]) + if all_committees: + all_committees_managers = all_committees.mapped('committe_head') + if self.user_id in all_committees_managers: + self.role_type = 'manager' + else: + for rec in all_committees: + if rec.committe_members and self.user_id.name in rec.committe_members.mapped('name'): + self.role_type = 'member' + + def action_create_search(self): + self.move_ids = False + if not self.start_date and not self.end_date and self.purchase_requisition and self.committee_member and self.hr_department_id: + raise ValidationError(_('You Should Select Parameters')) + domain = [] + purchase_requisition = self.purchase_requisition + if purchase_requisition: + domain += [("requisition_id", "in", purchase_requisition.ids)] + if self.committee_member: + domain += [("initial_evaluation_lines.user_id", "=", self.committee_member.id)] + # domain += [("committee_members", "in", self.committee_member.ids)] + + if self.hr_department_id: + domain += [("department_id", "=", self.hr_department_id.id)] + + start_date = self.start_date + if start_date: + domain += [('create_date', '>=', start_date)] + if not start_date: + start_date = datetime(2010, 1, 1, 10, 0, 0, 0) + + end_date = self.end_date + if end_date: + domain += [('create_date', '<=', end_date)] + if not end_date: + end_date = datetime(2100, 1, 1, 10, 0, 0, 0) + + self.move_ids = self.env['purchase.order'].search(domain) + print('move_lines >>>>>>>>>>>', self.move_ids.mapped('name')) + + if not self.move_ids: + raise ValidationError(_('There is No Data to present')) + # return self.move_ids + + def get_max_average_evaluation(self): + max_avg = 0 + best_partner = '' + for order in self.move_ids: + avg = order.avg_evaluation or 0 + if avg > max_avg: + max_avg = avg + best_partner = order.partner_id.name + return best_partner + + def action_create_search_html(self): + self.action_create_search() + return self.env.ref('odex25_evaluation_eriteria.final_evaluation_view_action').report_action(self) + + def action_create_search_pdf(self): + self.action_create_search() + return self.env.ref('odex25_evaluation_eriteria.final_evaluation_pdf_report_action').report_action(self) diff --git a/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.xml b/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.xml new file mode 100644 index 000000000..159ced86d --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/wizard/final_evaluation_wizard.xml @@ -0,0 +1,50 @@ + + + + final.evaluation.wizard.view + final.evaluation.wizard + +
+ + + + + + + + + + + + + +
+
+
+
+
+ + + final Evaluation Report + ir.actions.act_window + final.evaluation.wizard + form + + new + + + + +
\ No newline at end of file diff --git a/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_report.py b/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_report.py new file mode 100644 index 000000000..e475a2bb1 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_report.py @@ -0,0 +1,69 @@ +from datetime import date, datetime +from odoo.exceptions import ValidationError +from odoo import api, fields, models, _ + + +class InitialEvaluationWizard(models.TransientModel): + _name = 'initial.evaluation.wizard' + _description = 'initial Evaluation Wizard' + + start_date = fields.Date('Start Date') + end_date = fields.Date('End Date') + purchase_requisition = fields.Many2many(comodel_name='purchase.requisition', string='Purchase Agreement') + committee_member = fields.Many2one(comodel_name='res.users', string='Committee Member') + move_ids = fields.Many2many('purchase.order', string='Orders') + today = fields.Date(string='Your string', default=lambda self: fields.Date.today()) + role_type = fields.Selection(string='Role Type',selection=[('manager', 'Manager'), ('member', 'Member'), ('not_member', 'not Member') ], compute='_compute_role_type') + user_id = fields.Many2one('res.users', string="User", default=lambda self: self.env.user) + + @api.depends('user_id') + def _compute_role_type(self): + if self.user_id: + self.role_type = 'not_member' + all_committees = self.env['purchase.committee.type'].search([]) + if all_committees: + all_committees_managers = all_committees.mapped('committe_head') + if self.user_id in all_committees_managers: + self.role_type = 'manager' + else: + for rec in all_committees: + if rec.committe_members and self.user_id.name in rec.committe_members.mapped('name'): + self.role_type = 'member' + + def action_create_search(self): + self.move_ids = False + if not self.start_date and not self.end_date and self.purchase_requisition and self.committee_member: + raise ValidationError(_('You Should Select Parameters')) + domain = [] + purchase_requisition = self.purchase_requisition + if purchase_requisition: + domain += [("requisition_id", "in", purchase_requisition.ids)] + if self.committee_member: + domain += [("initial_evaluation_lines.user_id", "=", self.committee_member.id)] + + start_date = self.start_date + if start_date: + domain += [('create_date', '>=', start_date)] + if not start_date: + start_date = datetime(2010, 1, 1, 10, 0, 0, 0) + + end_date = self.end_date + if end_date: + domain += [('create_date', '<=', end_date)] + if not end_date: + end_date = datetime(2100, 1, 1, 10, 0, 0, 0) + + self.move_ids = self.env['purchase.order'].search(domain) + print('move_lines >>>>>>>>>>>', self.move_ids.mapped('name')) + + if not self.move_ids: + raise ValidationError(_('There is No Data to present')) + # return self.move_ids + + def action_create_search_html(self): + self.action_create_search() + return self.env.ref('odex25_evaluation_eriteria.initial_evaluation_view_action').report_action(self) + + def action_create_search_pdf(self): + self.action_create_search() + return self.env.ref('odex25_evaluation_eriteria.initial_evaluation_pdf_report_action').report_action(self) diff --git a/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_wizard.xml b/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_wizard.xml new file mode 100644 index 000000000..499b20512 --- /dev/null +++ b/odex25_purchase/odex25_evaluation_eriteria/wizard/intial_evaluation_wizard.xml @@ -0,0 +1,48 @@ + + + + initial.evaluation.wizard.view + initial.evaluation.wizard + +
+ + + + + + + + + + + + +
+
+
+
+
+ + + Initial Evaluation Report + ir.actions.act_window + initial.evaluation.wizard + form + + new + + + + +
\ No newline at end of file