diff --git a/odex25_project/project_base/__init__.py b/odex25_project/project_base/__init__.py index f2155f77c..2b2b687eb 100644 --- a/odex25_project/project_base/__init__.py +++ b/odex25_project/project_base/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- from . import models from . import wizard +from .import report diff --git a/odex25_project/project_base/i18n/ar_001.po b/odex25_project/project_base/i18n/ar_001.po index 7ef2b4a92..73b603683 100644 --- a/odex25_project/project_base/i18n/ar_001.po +++ b/odex25_project/project_base/i18n/ar_001.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-03 08:58+0000\n" -"PO-Revision-Date: 2024-06-03 08:58+0000\n" +"POT-Creation-Date: 2025-04-23 11:07+0000\n" +"PO-Revision-Date: 2025-04-23 11:07+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -83,7 +83,7 @@ msgstr "" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_new_project_kanban msgid "" -msgstr "" +msgstr "" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form @@ -158,6 +158,126 @@ msgstr "التنفيذ" msgid "New" msgstr "جديد" +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Additional Work Amount" +msgstr "مبلغ الأعمال الإضافية" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Amount" +msgstr "المبلغ" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Completion Percentage" +msgstr "نسبة الإنجاز" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Completion" +msgstr "نسبة الإنجاز" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Consultant Fees" +msgstr "تكاليف المستشار" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Contract Amount" +msgstr "مبلغ العقد" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Department" +msgstr "القسم" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Due Date" +msgstr "تاريخ اﻹستحقاق" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "End Date" +msgstr "تاريخ الانتهاء" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Executive Department" +msgstr "الفرع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Payment Status" +msgstr "حالة الدفع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Payment" +msgstr "الدفعة" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Category" +msgstr "تصنيف المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project End Date" +msgstr "تاريخ نهاية المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Manager" +msgstr "مدير المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Name" +msgstr "اسم المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Start Date" +msgstr "تاريخ بداية المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Stage" +msgstr "المرحلة" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Start Date" +msgstr "تاريخ البدء" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Task" +msgstr "المهام" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Tax amount" +msgstr "مبلغ الضريبة" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Tax" +msgstr "الضريبة" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Total" +msgstr "الاجمالي" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Weight" +msgstr "الوزن" + #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice msgid "" @@ -177,7 +297,7 @@ msgstr "" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice msgid "Amount" -msgstr "" +msgstr "القيمة" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_new_project_kanban @@ -194,6 +314,21 @@ msgstr "" msgid "View" msgstr "عرض" +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Details" +msgstr "وصف المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Payments" +msgstr "دفعات المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Stages" +msgstr "مراحل المشروع" + #. module: project_base #: model:ir.model.fields,help:project_base.field_sale_advance_payment_inv__advance_down_payment_method msgid "" @@ -201,8 +336,11 @@ msgid "" " according to their invoicing policy (based on ordered or delivered " "quantity)." msgstr "" +"يتم إصدار الفاتورة القياسية مع كافة بنود الطلب جاحزة لفوترتها، وفقاً لسياسة " +"الفوترة الخاصة بها (بناءً على الكميات المطلوبة أو التي تم توصيلها). " #. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_category__account_id #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__account_id msgid "Account" msgstr "الحساب" @@ -211,7 +349,7 @@ msgstr "الحساب" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_needaction #: model:ir.model.fields,field_description:project_base.field_project_phase__message_needaction msgid "Action Needed" -msgstr "" +msgstr "إجراء مطلوب" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_ids @@ -221,17 +359,17 @@ msgstr "الانشطة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_exception_decoration msgid "Activity Exception Decoration" -msgstr "" +msgstr "زخرفة استثناء النشاط" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_state msgid "Activity State" -msgstr "" +msgstr "حالة النشاط" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_type_icon msgid "Activity Type Icon" -msgstr "" +msgstr "أيقونة نوع النشاط" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice @@ -268,10 +406,31 @@ msgstr "" msgid "All Task Count" msgstr "المهام" +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_project__privacy_visibility__employees +msgid "All internal users" +msgstr "جميع المستخدمين الداخليين" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__estimated_hours msgid "Allocated By" -msgstr "" +msgstr "ساعات العمل" + +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_invoice__allowed_internal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_phase__allowed_internal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_project__allowed_internal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_task__allowed_internal_user_ids +msgid "Allowed Internal Users" +msgstr "المستخدميين الداخليين المسموح لهم" + +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_invoice__allowed_portal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_phase__allowed_portal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_project__allowed_portal_user_ids +#: model:ir.model.fields,field_description:project_base.field_project_task__allowed_portal_user_ids +msgid "Allowed Portal Users" +msgstr "المستخدميين البوابة المسموح لهم" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__amount @@ -295,12 +454,28 @@ msgstr "" msgid "Attachment Count" msgstr "عدد المستندات" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_category__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_hold_reason__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_invoice__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_invoice_line__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_phase__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_phase_type__attachment_ids +#: model:ir.model.fields,field_description:project_base.field_project_team__attachment_ids +msgid "Attachments" +msgstr "" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__back_log_amount #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice msgid "Back Log Amount" msgstr "" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_project__beneficiary_id +msgid "Beneficiary" +msgstr "المستفيد" + #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_phase_wizard @@ -331,7 +506,7 @@ msgstr "اختر سبب تعليق المشروع." #. module: project_base #: model:ir.model.fields,help:project_base.field_project_task_type__color_gantt msgid "Choose your color for Task Bar" -msgstr "" +msgstr "اختر لونًا لشريط المهام الخاص بك" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__city @@ -362,7 +537,7 @@ msgstr "مغلق" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_task_type__color_gantt msgid "Color Task Bar" -msgstr "" +msgstr "لون شريط المهام" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_category__company_id @@ -372,7 +547,7 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_phase_type__company_id #: model:ir.model.fields,field_description:project_base.field_project_task_type__company_id msgid "Company" -msgstr "" +msgstr "الشركة" #. module: project_base #: model:ir.model,name:project_base.model_res_config_settings @@ -393,13 +568,14 @@ msgstr "مؤكد" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__consultant_id +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__invoice_type__consultant msgid "Consultant" msgstr "المستشار" #. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_project__beneficiary_id -msgid "Beneficiary" -msgstr "المستفيد" +#: model:ir.model.fields,field_description:project_base.field_project_project__consultant_cost +msgid "Consultant Cost" +msgstr "تكاليف المستشار" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice @@ -421,11 +597,6 @@ msgstr "رقم العقد" msgid "Contract Value" msgstr "مبلغ العقد" -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_project__consultant_cost -msgid "Consultant Cost" -msgstr "تكاليف المستشار" - #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__country_id #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form @@ -438,6 +609,7 @@ msgid "Create Down Payment" msgstr "" #. module: project_base +#: model:res.groups,name:project_base.group_project_create_invoice #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form msgid "Create Invoice" @@ -459,7 +631,7 @@ msgstr "إنشاء فاتورة للمشروع لكل مرحلة أو كل فت #: model:ir.model.fields,field_description:project_base.field_project_phase_type__create_uid #: model:ir.model.fields,field_description:project_base.field_project_team__create_uid msgid "Created by" -msgstr "" +msgstr "أنشئ بواسطة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase__create_date @@ -472,7 +644,7 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_phase_type__create_date #: model:ir.model.fields,field_description:project_base.field_project_team__create_date msgid "Created on" -msgstr "" +msgstr "أنشئ في" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__currency_id @@ -496,13 +668,11 @@ msgstr "الافتراضي في المشروع الجديد" msgid "Department" msgstr "القسم" - #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__department_execute_id msgid "Department to which executed" msgstr " القسم المنفذ له" - #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__name #: model_terms:ir.ui.view,arch_db:project_base.project_detail_qweb_report @@ -510,15 +680,10 @@ msgstr " القسم المنفذ له" msgid "Description" msgstr "الوصف" -#. module: project_base -#: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form -msgid "Details" -msgstr "التفاصيل" - #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__discount msgid "Discount (%)" -msgstr "" +msgstr "الخصم (%)" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase__display_name @@ -530,8 +695,9 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_phase__display_name #: model:ir.model.fields,field_description:project_base.field_project_phase_type__display_name #: model:ir.model.fields,field_description:project_base.field_project_team__display_name +#: model:ir.model.fields,field_description:project_base.field_report_project_base_project_status_qweb_report__display_name msgid "Display Name" -msgstr "" +msgstr "الاسم المعروض" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_new_project_kanban @@ -545,6 +711,12 @@ msgstr "المستندات" msgid "Done" msgstr "تم" +#. module: project_base +#: code:addons/project_base/models/project_task.py:0 +#, python-format +msgid "Done Task" +msgstr "" + #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view msgid "DowmPayment" @@ -553,17 +725,17 @@ msgstr "" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__is_down_payment msgid "Down Payment" -msgstr "" +msgstr "الدفعة المقدّمة" #. module: project_base #: model:ir.model.fields.selection,name:project_base.selection__sale_advance_payment_inv__advance_down_payment_method__fixed msgid "Down payment (fixed amount)" -msgstr "" +msgstr "دفعة مقدّمة (مبلغ ثابت)" #. module: project_base #: model:ir.model.fields.selection,name:project_base.selection__sale_advance_payment_inv__advance_down_payment_method__percentage msgid "Down payment (percentage)" -msgstr "" +msgstr "دفعة مقدّمة (نسبة)" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice_line__is_downpayment @@ -571,6 +743,8 @@ msgid "" "Down payments are made when creating invoices from a sales order. They are " "not copied when duplicating a sales order." msgstr "" +"يتم تسجيل الدفعة المقدّمة عند إنشاء الفواتير من أمر البيع. لا يتم نسخه عند " +"إنشاء نسخة من أمر البيع." #. module: project_base #: code:addons/project_base/models/project_invoice.py:0 @@ -612,6 +786,11 @@ msgstr "الموظف" msgid "Employees" msgstr "الموظفين" +#. module: project_base +#: model:ir.model.fields,help:project_base.field_project_project__allow_timesheets +msgid "Enable timesheeting on the project." +msgstr "تمكين الجدول الزمني في المشروع." + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase__end_date #: model:ir.model.fields,field_description:project_base.field_project_phase__end_date @@ -650,24 +829,24 @@ msgstr "عدد المهام المنتهية" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_follower_ids #: model:ir.model.fields,field_description:project_base.field_project_phase__message_follower_ids msgid "Followers" -msgstr "" +msgstr "المتابعون" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_channel_ids #: model:ir.model.fields,field_description:project_base.field_project_phase__message_channel_ids msgid "Followers (Channels)" -msgstr "" +msgstr "المتابعون (القنوات)" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_partner_ids #: model:ir.model.fields,field_description:project_base.field_project_phase__message_partner_ids msgid "Followers (Partners)" -msgstr "" +msgstr "المتابعون (الشركاء)" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_phase__activity_type_icon msgid "Font awesome icon e.g. fa-tasks" -msgstr "" +msgstr "رمز الخط الرائع ، على سبيل المثال FA- المهام" #. module: project_base #: code:addons/project_base/models/project_phase.py:0 @@ -679,7 +858,7 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:project_base.view_phase_search_form #: model_terms:ir.ui.view,arch_db:project_base.view_project_invoice_filter msgid "Group By" -msgstr "" +msgstr "تجميع حسب" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__has_downpayment @@ -710,18 +889,19 @@ msgstr "اسباب التعليق" #: model:ir.model.fields,field_description:project_base.field_project_phase__id #: model:ir.model.fields,field_description:project_base.field_project_phase_type__id #: model:ir.model.fields,field_description:project_base.field_project_team__id +#: model:ir.model.fields,field_description:project_base.field_report_project_base_project_status_qweb_report__id msgid "ID" -msgstr "" +msgstr "المُعرف" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_exception_icon msgid "Icon" -msgstr "" +msgstr "الأيقونة" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_phase__activity_exception_icon msgid "Icon to indicate an exception activity." -msgstr "" +msgstr "الأيقونة للإشارة إلى استثناء النشاط" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__message_needaction @@ -729,7 +909,7 @@ msgstr "" #: model:ir.model.fields,help:project_base.field_project_phase__message_needaction #: model:ir.model.fields,help:project_base.field_project_phase__message_unread msgid "If checked, new messages require your attention." -msgstr "" +msgstr "إذا كان محددًا، فهناك رسائل جديدة تحتاج لرؤيتها." #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__message_has_error @@ -737,12 +917,18 @@ msgstr "" #: model:ir.model.fields,help:project_base.field_project_phase__message_has_error #: model:ir.model.fields,help:project_base.field_project_phase__message_has_sms_error msgid "If checked, some messages have a delivery error." -msgstr "" +msgstr "إذا كان محددًا، فقد حدث خطأ في تسليم بعض الرسائل." #. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_project__priority__1 +msgid "Important" +msgstr "مهم" + +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__in_payment #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view msgid "In Payment" -msgstr "للدفع" +msgstr "بانتظار التسوية " #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__task_count_inprogress @@ -755,6 +941,16 @@ msgstr "عدد المهام قيد التنفيذ" msgid "Internal" msgstr "داخلي" +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_project__privacy_visibility__followers +msgid "Invited internal users" +msgstr "المستخدمون الداخليون المدعوون " + +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_project__privacy_visibility__portal +msgid "Invited portal users and all internal users" +msgstr "مستخدمو البوابة المدعوون وكافة المستخدمين الداخليين " + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__invoice_id #: model:ir.model.fields,field_description:project_base.field_project_project__invoice_ids @@ -796,6 +992,7 @@ msgstr "طلب فاتورة" #. module: project_base #: code:addons/project_base/models/project_invoice.py:0 +#: code:addons/project_base/models/project_invoice.py:0 #, python-format msgid "Invoice Request " msgstr "طلب فاتورة" @@ -807,6 +1004,7 @@ msgstr "نوع الدفعة" #. module: project_base #: code:addons/project_base/models/project_invoice.py:0 +#: code:addons/project_base/models/project_invoice.py:0 #, python-format msgid "Invoice request created for project %s and need your action" msgstr "تم إنشاء طلب فاتورة للمشروع %s ويحتاج إلى إجراء من طرفك" @@ -814,7 +1012,7 @@ msgstr "تم إنشاء طلب فاتورة للمشروع %s ويحتاج إل #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__qty_invoiced msgid "Invoiced Quantity" -msgstr "" +msgstr "الكمية المفوترة" #. module: project_base #: code:addons/project_base/models/project.py:0 @@ -834,6 +1032,11 @@ msgstr "" msgid "Invoicing" msgstr "الدفعات" +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__invoicing_legacy +msgid "Invoicing App Legacy" +msgstr "" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__invoice_period msgid "Invoicing Every" @@ -876,12 +1079,12 @@ msgstr "فوترة بالمراحل" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_is_follower #: model:ir.model.fields,field_description:project_base.field_project_phase__message_is_follower msgid "Is Follower" -msgstr "" +msgstr "متابع" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__is_downpayment msgid "Is a down payment" -msgstr "" +msgstr "هو دفعة مقدّمة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__actual_date @@ -920,6 +1123,12 @@ msgstr "يرجى إدخال تاريخ الاستحقاق لطلب الفاتو msgid "Kindly Enter project Stage first." msgstr "يرجى إدخال مراحل المشروع أولا." +#. module: project_base +#: code:addons/project_base/models/project_invoice.py:0 +#, python-format +msgid "Kindly The invoice is not in draft state, so it cannot be unlinked." +msgstr "عفوا الفاتورة ليست في حالة مسودة ولذلك لايمكن مسحها" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase____last_update #: model:ir.model.fields,field_description:project_base.field_project_category____last_update @@ -930,8 +1139,9 @@ msgstr "يرجى إدخال مراحل المشروع أولا." #: model:ir.model.fields,field_description:project_base.field_project_phase____last_update #: model:ir.model.fields,field_description:project_base.field_project_phase_type____last_update #: model:ir.model.fields,field_description:project_base.field_project_team____last_update +#: model:ir.model.fields,field_description:project_base.field_report_project_base_project_status_qweb_report____last_update msgid "Last Modified on" -msgstr "" +msgstr "آخر تعديل في" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase__write_uid @@ -944,7 +1154,7 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_phase_type__write_uid #: model:ir.model.fields,field_description:project_base.field_project_team__write_uid msgid "Last Updated by" -msgstr "" +msgstr "آخر تحديث بواسطة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_edit_project_phase__write_date @@ -957,17 +1167,17 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_phase_type__write_date #: model:ir.model.fields,field_description:project_base.field_project_team__write_date msgid "Last Updated on" -msgstr "" +msgstr "آخر تحديث في" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_task_search_form msgid "Late Tasks" -msgstr "" +msgstr "مهام متأخره" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__launch_date msgid "Launch date" -msgstr "" +msgstr "تاريخ التسليم" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form @@ -1005,7 +1215,7 @@ msgstr "الموقع" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_main_attachment_id #: model:ir.model.fields,field_description:project_base.field_project_phase__message_main_attachment_id msgid "Main Attachment" -msgstr "" +msgstr "المرفق الرئيسي" #. module: project_base #: code:addons/project_base/models/project_phase.py:0 @@ -1027,18 +1237,18 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_has_error #: model:ir.model.fields,field_description:project_base.field_project_phase__message_has_error msgid "Message Delivery error" -msgstr "" +msgstr "خطأ في تسليم الرسائل" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_ids #: model:ir.model.fields,field_description:project_base.field_project_phase__message_ids msgid "Messages" -msgstr "" +msgstr "الرسائل" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__my_activity_date_deadline msgid "My Activity Deadline" -msgstr "" +msgstr "نهاية الوقت المعين للنشاط" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_category__name @@ -1062,17 +1272,17 @@ msgstr "عدد المهام الجديدة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_date_deadline msgid "Next Activity Deadline" -msgstr "" +msgstr "الموعد النهائي للنشاط التالي" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_summary msgid "Next Activity Summary" -msgstr "" +msgstr "ملخص النشاط التالي" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__activity_type_id msgid "Next Activity Type" -msgstr "" +msgstr "نوع النشاط التالي" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__no_of_invoices @@ -1084,18 +1294,33 @@ msgstr "عدد الدفعات" msgid "No Of Paid Invoices" msgstr "المدفعوعات" +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "No chart image available" +msgstr "لا توجد صورة للرسم البياني" + #. module: project_base #: model_terms:ir.actions.act_window,help:project_base.act_project_project_2_project_task_finished #: model_terms:ir.actions.act_window,help:project_base.act_project_project_2_project_task_inprogress #: model_terms:ir.actions.act_window,help:project_base.act_project_project_2_project_task_new msgid "No tasks found. Let's create one!" -msgstr "" +msgstr "لا يوجد مهام ز للنشئ واحده!" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice msgid "No.Of Issued Invoices" msgstr "" +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_project__priority__0 +msgid "Normal" +msgstr "عادي" + +#. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__not_paid +msgid "Not Paid" +msgstr "لم يدفع" + #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view msgid "Note" @@ -1110,31 +1335,31 @@ msgstr "ملاحظات" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_needaction_counter #: model:ir.model.fields,field_description:project_base.field_project_phase__message_needaction_counter msgid "Number of Actions" -msgstr "" +msgstr "عدد الإجراءات" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_has_error_counter #: model:ir.model.fields,field_description:project_base.field_project_phase__message_has_error_counter msgid "Number of errors" -msgstr "" +msgstr "عدد الاخطاء" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__message_needaction_counter #: model:ir.model.fields,help:project_base.field_project_phase__message_needaction_counter msgid "Number of messages which requires an action" -msgstr "" +msgstr "عدد الرسائل التي تتطلب إجراء" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__message_has_error_counter #: model:ir.model.fields,help:project_base.field_project_phase__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "عدد الرسائل الحادث بها خطأ في التسليم" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__message_unread_counter #: model:ir.model.fields,help:project_base.field_project_phase__message_unread_counter msgid "Number of unread messages" -msgstr "" +msgstr "عدد الرسائل الجديدة" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_config_settings_form @@ -1160,10 +1385,11 @@ msgid "PMO" msgstr "مدير المشاريع" #. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__paid #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view #: model_terms:ir.ui.view,arch_db:project_base.view_new_project_kanban msgid "Paid" -msgstr "مدفعوعة" +msgstr "تم دفعها" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__payment_amount @@ -1179,9 +1405,15 @@ msgstr "" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view msgid "Partial" -msgstr "" +msgstr "جزئي" #. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__partial +msgid "Partially Paid" +msgstr "دفع جزئي" + +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_invoice__partner_project_id #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form #: model_terms:ir.ui.view,arch_db:project_base.view_project_inherit #: model_terms:ir.ui.view,arch_db:project_base.view_project_project_filter_inherit @@ -1195,8 +1427,22 @@ msgstr "تاريخ الدفع" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__payment_state -msgid "Payment Status" -msgstr "حالة الدفع" +msgid "Payment State" +msgstr "" + +#. module: project_base +#: model:ir.model.fields,help:project_base.field_project_project__privacy_visibility +msgid "" +"People to whom this project and its tasks will be visible.\n" +"\n" +"- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +" A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n" +"\n" +"- All internal users: all internal users can access the project and all of its tasks without distinction.\n" +"\n" +"- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\n" +"When following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following." +msgstr "" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__product_uom_qty @@ -1272,6 +1518,11 @@ msgstr "" msgid "Print invoice" msgstr "" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_project__priority +msgid "Priority" +msgstr "الأولوية" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__product_id msgid "Product" @@ -1288,6 +1539,7 @@ msgstr "نسبة الانجاز" #: model:ir.model.fields,field_description:project_base.field_project_invoice__project_id #: model:ir.model.fields,field_description:project_base.field_project_phase__project_id #: model:ir.model.fields,field_description:project_base.field_project_team__project_id +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__invoice_type__project #: model:ir.model.fields.selection,name:project_base.selection__project_task_type__stage_for__project #: model_terms:ir.ui.view,arch_db:project_base.view_phase_search_form #: model_terms:ir.ui.view,arch_db:project_base.view_project_invoice_filter @@ -1311,7 +1563,7 @@ msgstr "رقم المشروع" #: model:ir.model.fields,field_description:project_base.field_res_config_settings__module_project_budget #: model_terms:ir.ui.view,arch_db:project_base.view_config_settings_form msgid "Project Budget" -msgstr "" +msgstr "ميزانية المشروع" #. module: project_base #: model:ir.actions.act_window,name:project_base.open_project_category_form @@ -1387,6 +1639,11 @@ msgstr "" msgid "Project Location Info" msgstr "" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_project__user_id +msgid "Project Manager" +msgstr "مدير المشروع" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_res_company__module_project_metrics #: model:ir.model.fields,field_description:project_base.field_res_config_settings__module_project_metrics @@ -1410,6 +1667,11 @@ msgstr "رقم المشروع" msgid "Project Overview" msgstr "" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_project__project_owner +msgid "Project Owner" +msgstr "" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_task__phase_id msgid "Project Phase" @@ -1447,6 +1709,21 @@ msgstr "" msgid "Project Stages" msgstr "" +#. module: project_base +#: model:ir.model,name:project_base.model_report_project_base_project_status_qweb_report +msgid "Project Status QWeb Report" +msgstr "تقرير حالة المشروع" + +#. module: project_base +#: model:ir.actions.report,name:project_base.report_project_status +msgid "Project Status Report" +msgstr "تقرير حالة المشروع" + +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_status_qweb_report +msgid "Project Status Report:" +msgstr "تقرير حالة المشروع" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__project_team_ids #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form @@ -1472,7 +1749,7 @@ msgstr "" #. module: project_base #: model:ir.actions.act_window,name:project_base.create_tast_proj msgid "Project's tasks" -msgstr "" +msgstr "مهام المشروع" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.print_project_invoice @@ -1493,6 +1770,11 @@ msgstr "" msgid "Project: Update Project Status" msgstr "" +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.view_project_new_calendar +msgid "Projects" +msgstr "المشاريع" + #. module: project_base #: code:addons/project_base/models/sale_order.py:0 #, python-format @@ -1507,7 +1789,7 @@ msgstr "المشتريات" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_sale_order_line__phase_qty msgid "Quantity" -msgstr "" +msgstr "الكمية" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_edit_project_inherit_form @@ -1587,6 +1869,7 @@ msgid "Revenue" msgstr "ايرادي" #. module: project_base +#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__payment_state__reversed #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view msgid "Reversed" msgstr "" @@ -1602,7 +1885,7 @@ msgstr "قيد التنفيذ" #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_has_sms_error #: model:ir.model.fields,field_description:project_base.field_project_phase__message_has_sms_error msgid "SMS Delivery error" -msgstr "" +msgstr "خطأ في تسليم الرسائل القصيرة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__sale_order_amount @@ -1614,12 +1897,12 @@ msgstr "" #: model:ir.model.fields,field_description:project_base.field_account_move__sale_order_id #: model:ir.model.fields,field_description:project_base.field_account_payment__sale_order_id msgid "Sale" -msgstr "" +msgstr "للبيع" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__order_line_id msgid "Sale Line" -msgstr "" +msgstr "بند البيع" #. module: project_base #: model:ir.model,name:project_base.model_sale_advance_payment_inv @@ -1640,7 +1923,7 @@ msgstr "بند أمر المبيعات" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__sale_order_id msgid "Sales order to which the project is linked." -msgstr "" +msgstr "أمر البيع الذي يرتبط به هذا المشروع. " #. module: project_base #: model:ir.model.fields,field_description:project_base.field_res_config_settings__module_project_scrum_agile @@ -1663,6 +1946,12 @@ msgstr "متسلسل" msgid "Set to Draft" msgstr "ارجاع لمسودة" +#. module: project_base +#: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view +#: model_terms:ir.ui.view,arch_db:project_base.view_task_form2 +msgid "Settings Allowed Users" +msgstr "اعداد صلاحية المستخدمين" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__signature_date msgid "Signature Date" @@ -1720,6 +2009,10 @@ msgid "" "Today: Activity date is today\n" "Planned: Future activities." msgstr "" +"الحالة على أساس الأنشطة\n" +"المتأخرة: تاريخ الاستحقاق مر\n" +"اليوم: تاريخ النشاط هو اليوم\n" +"المخطط: الأنشطة المستقبلية." #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__street @@ -1772,6 +2065,12 @@ msgstr "وسوم" msgid "Task" msgstr "مهمة" +#. module: project_base +#: code:addons/project_base/models/project_task.py:0 +#, python-format +msgid "Task %s is done for project %s and needs your action" +msgstr "" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_task__task_progress msgid "Task Progress" @@ -1878,10 +2177,15 @@ msgstr "يجب أن يكون الوزن بين 0 و 100." msgid "This invoice is due and must be issue %s" msgstr "" +#. module: project_base +#: model:ir.model.fields,field_description:project_base.field_project_project__allow_timesheets +msgid "Timesheets" +msgstr "سجلات الأنشطة" + #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_project__to_invoice msgid "To Invoice" -msgstr "" +msgstr "في انتظار الفوترة" #. module: project_base #: model_terms:ir.actions.act_window,help:project_base.act_project_project_2_project_task_finished @@ -1896,7 +2200,7 @@ msgstr "" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__to_invoice msgid "To invoice" -msgstr "" +msgstr "على الفاتورة" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_tree_view @@ -1957,7 +2261,7 @@ msgstr "النوع" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_phase__activity_exception_decoration msgid "Type of the exception activity on record." -msgstr "" +msgstr "نوع النشاط الاستثنائي المسجل." #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__price_unit @@ -1967,19 +2271,19 @@ msgstr "المبلغ" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice_line__product_uom msgid "Unit of Measure" -msgstr "" +msgstr "وحدة القياس" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_unread #: model:ir.model.fields,field_description:project_base.field_project_phase__message_unread msgid "Unread Messages" -msgstr "" +msgstr "الرسائل الجديدة" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__message_unread_counter #: model:ir.model.fields,field_description:project_base.field_project_phase__message_unread_counter msgid "Unread Messages Counter" -msgstr "" +msgstr "عدد الرسائل الجديدة" #. module: project_base #: model_terms:ir.ui.view,arch_db:project_base.view_config_settings_form @@ -1991,32 +2295,27 @@ msgstr "" msgid "Variance Days" msgstr "" -#. module: project_base -#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__invoice_type__project -msgid "Project" -msgstr "دفعة مشروع" - #. module: project_base #: model:ir.model.fields.selection,name:project_base.selection__project_invoice__invoice_type__variation_order msgid "Variation Order" msgstr "دفعة طلب تغير" #. module: project_base -#: model:ir.model.fields.selection,name:project_base.selection__project_invoice__invoice_type__consultant -msgid "Consultant" -msgstr "دفعة مستشار" +#: model:ir.model.fields,field_description:project_base.field_project_project__privacy_visibility +msgid "Visibility" +msgstr "الظهور" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_invoice__website_message_ids #: model:ir.model.fields,field_description:project_base.field_project_phase__website_message_ids msgid "Website Messages" -msgstr "" +msgstr "رسائل الموقع" #. module: project_base #: model:ir.model.fields,help:project_base.field_project_invoice__website_message_ids #: model:ir.model.fields,help:project_base.field_project_phase__website_message_ids msgid "Website communication history" -msgstr "" +msgstr "سجل تواصل الموقع" #. module: project_base #: model:ir.model.fields,field_description:project_base.field_project_phase__weight @@ -2119,59 +2418,3 @@ msgstr "فريق المشروع" #: model_terms:ir.ui.view,arch_db:project_base.project_invoice_tree_view msgid "residual_amount" msgstr "المبلغ المتبقي" - - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_invoice__allowed_internal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_phase__allowed_internal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_project__allowed_internal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_task__allowed_internal_user_ids -msgid "Allowed Internal Users" -msgstr "المستخدميين الداخليين المسموح لهم" - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_invoice__allowed_portal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_phase__allowed_portal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_project__allowed_portal_user_ids -#: model:ir.model.fields,field_description:project_base.field_project_task__allowed_portal_user_ids -msgid "Allowed Portal Users" -msgstr "المستخدميين البوابة المسموح لهم" - -#. module: project_base -#: model_terms:ir.ui.view,arch_db:project_base.project_invoice_form_view -#: model_terms:ir.ui.view,arch_db:project_base.view_task_form2 -msgid "Settings Allowed Users" -msgstr "اعداد صلاحية المستخدمين" - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_phase__estimated_hours -msgid "Allocated By" -msgstr "ساعات العمل" - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_project__launch_date -msgid "Launch date" -msgstr "تاريخ التسليم" - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_category__account_id -msgid "Account" -msgstr "الحساب" - -#. module: project_base -#: code:addons/project_base/models/project_invoice.py:0 -#, python-format -msgid "Kindly The invoice is not in draft state, so it cannot be unlinked." -msgstr "عفوا الفاتورة ليست في حالة مسودة ولذلك لايمكن مسحها" - -#. module: project_base -#: model:res.groups,name:project_base.group_project_create_invoice -msgid "Create Invoice" -msgstr "إنشاء فاتورة" - -#. module: project_base -#: model:ir.model.fields,field_description:project_base.field_project_invoice__partner_project_id -msgid "Partner" -msgstr "الجهة" - - diff --git a/odex25_project/project_base/report/__init__.py b/odex25_project/project_base/report/__init__.py new file mode 100644 index 000000000..b4f2c2483 --- /dev/null +++ b/odex25_project/project_base/report/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import project_status_report \ No newline at end of file diff --git a/odex25_project/project_base/report/project_report_templates.xml b/odex25_project/project_base/report/project_report_templates.xml index ca3015e53..c6cf123ad 100644 --- a/odex25_project/project_base/report/project_report_templates.xml +++ b/odex25_project/project_base/report/project_report_templates.xml @@ -1,167 +1,454 @@ - diff --git a/odex25_project/project_base/report/project_reports.xml b/odex25_project/project_base/report/project_reports.xml index 4f43a6cdf..1ad839d52 100644 --- a/odex25_project/project_base/report/project_reports.xml +++ b/odex25_project/project_base/report/project_reports.xml @@ -8,6 +8,13 @@ file="project_base.project_detail_qweb_report" string="Project Charter"/> + + A4 for E-Invoice diff --git a/odex25_project/project_base/report/project_status_report.py b/odex25_project/project_base/report/project_status_report.py new file mode 100644 index 000000000..6b79e5946 --- /dev/null +++ b/odex25_project/project_base/report/project_status_report.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError, Warning +import matplotlib.pyplot as plt +import io +import base64 +import matplotlib +matplotlib.use('Agg') +import logging + +import os +import arabic_reshaper +from bidi.algorithm import get_display +from odoo.modules.module import get_module_resource + +_logger = logging.getLogger(__name__) + + +class ReportProjectStatus(models.AbstractModel): + _name = 'report.project_base.project_status_qweb_report' + _description = 'Project Status QWeb Report' + + @api.model + def _get_report_values(self, docids, data=None): + projects = self.env['project.project'].browse(docids) + chart_map = {} + + for project in projects: + try: + chart = self._get_chart_image(project) + except Exception as e: + _logger.error(f"Chart error for project {project.id}: {str(e)}") + chart = False + + chart_map[project.id] = chart + + return { + 'doc_ids': docids, + 'doc_model': 'project.project', + 'docs': projects, + 'chart_map': chart_map, + } + + def _get_chart_image(self, project): + _logger.info( + f"Task counts - New: {project.task_count_new}, In Progress: {project.task_count_inprogress}, Done: {project.task_count_finished}") + + task_data = { + 'new': project.task_count_new or 0, + 'in_progress': project.task_count_inprogress or 0, + 'done': project.task_count_finished or 0, + } + + if sum(task_data.values()) == 0: + _logger.warning("All task counts are zero, using dummy data") + task_data = {'new': 1, 'in_progress': 1, 'done': 1} + + font_path = os.path.join(os.path.dirname(__file__), 'img', 'amiri-regular.ttf') + if not os.path.exists(font_path): + font_path = get_module_resource('project_base', 'static/fonts', 'amiri-regular.ttf') + if not font_path: + _logger.warning("Arabic font not found. Using default font.") + font_path = None + + if font_path: + prop = matplotlib.font_manager.FontProperties(fname=font_path) + else: + prop = None + + fig = plt.figure(figsize=(5, 4)) + + def format_arabic(text): + reshaped_text = arabic_reshaper.reshape(text) + bidi_text = get_display(reshaped_text) + return bidi_text + + arabicLabels = ['جديد', 'قيد التنفيذ', 'تم'] + labels = [format_arabic(label) for label in arabicLabels] + sizes = [task_data['new'], task_data['in_progress'], task_data['done']] + colors = ['#f0312e', '#add8e6', '#90ee90'] + + plt.pie(sizes, labels=labels, autopct='%1.1f%%', colors=colors, startangle=90, + textprops={'fontproperties': prop, 'fontsize': 16} if prop else {'fontsize': 16}) + plt.axis('equal') + plt.rcParams['font.size'] = 18 + title_text = format_arabic('احصائيات المهام') + plt.title(title_text, fontproperties=prop if prop else None) + + buffer = io.BytesIO() + plt.savefig(buffer, format='png', bbox_inches='tight', dpi=300) + plt.close('all') + + chart_image = base64.b64encode(buffer.getvalue()).decode('utf-8') + buffer.close() + + _logger.info(f"Generated chart image with base64 length: {len(chart_image)}") + + return chart_image diff --git a/odex25_project/project_base/static/src/fonts/DroidKufi-Bold.ttf b/odex25_project/project_base/static/src/fonts/DroidKufi-Bold.ttf new file mode 100644 index 000000000..650919e26 Binary files /dev/null and b/odex25_project/project_base/static/src/fonts/DroidKufi-Bold.ttf differ