add budget module
This commit is contained in:
parent
49cf7349e4
commit
f5bdf8321b
|
|
@ -8,9 +8,9 @@
|
||||||
""",
|
""",
|
||||||
'author': "Expert Co. Ltd.",
|
'author': "Expert Co. Ltd.",
|
||||||
'website': "http://www.exp-sa.com",
|
'website': "http://www.exp-sa.com",
|
||||||
'category': 'Odex25-Accounting/Odex25-Accounting',
|
'category': 'Odex25 Accounting/Accounting',
|
||||||
# any module necessary for this one to work correctly
|
# any module necessary for this one to work correctly
|
||||||
'depends': ['base','odex25_account_budget', 'odex25_account_reports', 'report_xlsx'],
|
'depends': ['odex25_account_budget', 'odex25_account_reports', 'report_xlsx'],
|
||||||
# always loaded
|
# always loaded
|
||||||
'data': [
|
'data': [
|
||||||
'data/budget_operation_data.xml',
|
'data/budget_operation_data.xml',
|
||||||
|
|
|
||||||
0
odex25_accounting/account_budget_custom/data/budget_operation_data.xml
Normal file → Executable file
0
odex25_accounting/account_budget_custom/data/budget_operation_data.xml
Normal file → Executable file
|
|
@ -6,8 +6,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 14.0\n"
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-05-08 11:11+0000\n"
|
"POT-Creation-Date: 2024-06-26 18:41+0000\n"
|
||||||
"PO-Revision-Date: 2024-05-08 11:11+0000\n"
|
"PO-Revision-Date: 2024-06-26 18:41+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
|
@ -66,9 +66,40 @@ msgstr "السماح بتخطي الموازنة"
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__total_amount
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__total_amount
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__amount
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__amount
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__amount
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__amount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_budget_operations
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr "مبلغ"
|
msgstr "مبلغ"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__above_remain
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been exceeded"
|
||||||
|
msgstr ""
|
||||||
|
" هي المبالغ التي تم صرفها بعد انتهاء رصيد المتبقى من الموازنة في حالة "
|
||||||
|
"التجاوز الموازنة"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__provide
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been provided"
|
||||||
|
msgstr "تعزيز او تحويل من هو عبارة عن تعزيزات الموازنة او تحويلات من موزانات أخرى"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__pull_out
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been pulled out"
|
||||||
|
msgstr "تخفيض او تحويل الى هو عبارة عن تخفيضات للموازنة او تحويلات الى موزانات أخرى"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__remain
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been remained"
|
||||||
|
msgstr " ( مبلغ متاح - المبلغ المحجوز - مبلغ تعميد - المبلغ الفعلى - المحجوز المبدئي ) يكون صفر عند قابل الاشارة"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_budget_confirmation_form
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_budget_confirmation_form
|
||||||
msgid "Approve"
|
msgid "Approve"
|
||||||
|
|
@ -88,6 +119,7 @@ msgstr "المستفيد"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model,name:account_budget_custom.model_crossovered_budget
|
#: model:ir.model,name:account_budget_custom.model_crossovered_budget
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__crossovered_budget_id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__from_crossovered_budget_id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__from_crossovered_budget_id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__to_crossovered_budget_id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__to_crossovered_budget_id
|
||||||
msgid "Budget"
|
msgid "Budget"
|
||||||
|
|
@ -131,6 +163,7 @@ msgstr "بند الموازنة"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/reports/budget_report_xlsx.py:0
|
#: code:addons/account_budget_custom/reports/budget_report_xlsx.py:0
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget__crossovered_budget_line
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_graph
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_graph
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_pivot
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_pivot
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_tree
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_crossovered_budget_line_tree
|
||||||
|
|
@ -199,15 +232,21 @@ msgid "Budget XLSX Report"
|
||||||
msgstr "تقرير الموازنة (اكسل)"
|
msgstr "تقرير الموازنة (اكسل)"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model,name:account_budget_custom.model_account_budget_post
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
msgid "Budgetary Position"
|
#, python-format
|
||||||
msgstr "بند الموازنة"
|
msgid "Budget lines can not be overlaped with another."
|
||||||
|
msgstr "لا يمكن تراكب خطوط الميزانية مع بعضها البعض."
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.ui.menu,name:account_budget_custom.main_budgets_menu
|
#: model:ir.ui.menu,name:account_budget_custom.main_budgets_menu
|
||||||
msgid "Budgets"
|
msgid "Budgets"
|
||||||
msgstr "الموازنات"
|
msgstr "الموازنات"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__bybass_budget_check
|
||||||
|
msgid "ByPass Budget Line Check"
|
||||||
|
msgstr "تخطي ربط الموازنه بالحساب"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__state__cancel
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__state__cancel
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
|
|
@ -239,21 +278,16 @@ msgstr ""
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "تأكيد"
|
msgstr "تأكيد"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__confirm
|
|
||||||
msgid "Confirm Amount"
|
|
||||||
msgstr "المبلغ المصدق"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__budget_confirm_amount
|
|
||||||
msgid "Confirmation Amount"
|
|
||||||
msgstr "مبلغ التصديق"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__state__confirmed
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__state__confirmed
|
||||||
msgid "Confirmed"
|
msgid "Confirmed"
|
||||||
msgstr "مؤكد"
|
msgstr "مؤكد"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: model:ir.model,name:account_budget_custom.model_res_partner
|
||||||
|
msgid "Contact"
|
||||||
|
msgstr "جهة الاتصال"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__analytic_account_id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__analytic_account_id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__analytic_account_id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__analytic_account_id
|
||||||
|
|
@ -325,9 +359,12 @@ msgstr "تفاصيل المطابقة"
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__display_name
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__display_name
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__display_name
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget__display_name
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__display_name
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__display_name
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report__display_name
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report__display_name
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report__display_name
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_res_partner__display_name
|
||||||
msgid "Display Name"
|
msgid "Display Name"
|
||||||
msgstr "الاسم المعروض"
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
|
@ -346,12 +383,25 @@ msgstr "تم التعميد"
|
||||||
msgid "Draft"
|
msgid "Draft"
|
||||||
msgstr "موظف الميزانية"
|
msgstr "موظف الميزانية"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__above_remain
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
|
msgid "Exceed Amount"
|
||||||
|
msgstr "التجاوز الموازنة"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__final_amount
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__final_amount
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
msgid "Final Amount"
|
msgid "Final Amount"
|
||||||
msgstr "المبلغ النهائي"
|
msgstr "المبلغ النهائي"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__final_amount
|
||||||
|
#, python-format
|
||||||
|
msgid "Final amount of money that has been provided"
|
||||||
|
msgstr "هو مبلغ الموازنة المتاح للارتباط ويشمل مبلغ المخطط + تعزيز او تحويل من - تخفيض او تحويل الى"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__message_follower_ids
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__message_follower_ids
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__message_follower_ids
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__message_follower_ids
|
||||||
|
|
@ -399,11 +449,14 @@ msgstr "من العملية"
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__id
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget__id
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report__id
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report__id
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report__id
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_res_partner__id
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "المرجع"
|
msgstr "المُعرف"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__activity_exception_icon
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__activity_exception_icon
|
||||||
|
|
@ -442,18 +495,16 @@ msgstr "تعزيز"
|
||||||
msgid "Is Follower"
|
msgid "Is Follower"
|
||||||
msgstr "متابع"
|
msgstr "متابع"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__is_transfered
|
|
||||||
msgid "Is Transfered"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation____last_update
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line____last_update
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations____last_update
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget____last_update
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines____last_update
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard____last_update
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_report____last_update
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report____last_update
|
#: model:ir.model.fields,field_description:account_budget_custom.field_report_account_budget_custom_budget_xslx_report____last_update
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_res_partner____last_update
|
||||||
msgid "Last Modified on"
|
msgid "Last Modified on"
|
||||||
msgstr "آخر تعديل في"
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
|
@ -590,7 +641,7 @@ msgstr "المبلغ الفعلي"
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__provide
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__provide
|
||||||
msgid "Provide"
|
msgid "Provide"
|
||||||
msgstr "الدعومات"
|
msgstr "تعزيز/تحويل من"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
|
|
@ -601,7 +652,7 @@ msgstr "مبلغ الدعم"
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__pull_out
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__pull_out
|
||||||
msgid "Pull Out"
|
msgid "Pull Out"
|
||||||
msgstr "تخفيض"
|
msgstr "تخفيض/تحويل إلي"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
|
|
@ -612,29 +663,23 @@ msgstr "مبلغ السحب"
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__purchase_remain
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__purchase_remain
|
||||||
msgid "Purchase Remain"
|
msgid "Purchase Remain"
|
||||||
msgstr "المتبقي من التعميد"
|
msgstr "المبلغ"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__purchase_remind
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__purchase_remind
|
||||||
msgid "Purchase Remind"
|
msgid "Purchase Remind"
|
||||||
msgstr "المتبقي من التعميد"
|
msgstr "المبلغ"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__type__purchase_request
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__type__purchase_request
|
||||||
msgid "Purchase Request"
|
msgid "Purchase Request"
|
||||||
msgstr "طلب شراء"
|
msgstr ""
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__type__purchase_order
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_confirmation__type__purchase_order
|
||||||
msgid "Purchase Requisition"
|
msgid "Purchase Requisition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__reason
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__reason
|
|
||||||
msgid "Reason/Justification"
|
|
||||||
msgstr "السببظ المبرر"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__ref
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__ref
|
||||||
msgid "Reference"
|
msgid "Reference"
|
||||||
|
|
@ -648,10 +693,14 @@ msgstr "رفض"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__reject_reason
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__reject_reason
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__reject_reason
|
|
||||||
msgid "Reject Reason"
|
msgid "Reject Reason"
|
||||||
msgstr "سبب الرفض"
|
msgstr "سبب الرفض"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: model:ir.model.fields,field_description:account_budget_custom.field_reject_wizard__reject_reason
|
||||||
|
msgid "Reject Reson"
|
||||||
|
msgstr "سبب الرفض"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__res_model
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation__res_model
|
||||||
msgid "Related Document Model Name"
|
msgid "Related Document Model Name"
|
||||||
|
|
@ -660,7 +709,7 @@ msgstr "اسم كائن المستند المرتبط"
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__remain
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_confirmation_line__remain
|
||||||
msgid "Remain"
|
msgid "Remain"
|
||||||
msgstr "الباقي"
|
msgstr "المبلغ المتاح"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
|
|
@ -688,12 +737,6 @@ msgstr "التقارير"
|
||||||
msgid "Request user"
|
msgid "Request user"
|
||||||
msgstr "المستخدم الطالب"
|
msgstr "المستخدم الطالب"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__reserve
|
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
|
||||||
msgid "Reserve Amount"
|
|
||||||
msgstr "المبلغ المحجوز"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__from_reserved
|
#: model:ir.model.fields,field_description:account_budget_custom.field_budget_operations__from_reserved
|
||||||
msgid "Reserve?"
|
msgid "Reserve?"
|
||||||
|
|
@ -738,6 +781,12 @@ msgstr ""
|
||||||
msgid "Sorry, No data to Print"
|
msgid "Sorry, No data to Print"
|
||||||
msgstr "لا يوجد بيانات ليتم طباعتها"
|
msgstr "لا يوجد بيانات ليتم طباعتها"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Sources Sale Orders %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/models/budget_confirmation.py:0
|
#: code:addons/account_budget_custom/models/budget_confirmation.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
|
|
@ -770,17 +819,26 @@ msgstr ""
|
||||||
"اليوم: تاريخ النشاط هو اليوم\n"
|
"اليوم: تاريخ النشاط هو اليوم\n"
|
||||||
"المخطط: الأنشطة المستقبلية."
|
"المخطط: الأنشطة المستقبلية."
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The amount must be less than or equal to the budget line final amount"
|
||||||
|
msgstr "يجب ان يكون المبلغ اقل او يساوي المبلغ النهائي للبند الموازنة"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The date must be between the budget %s post period"
|
||||||
|
msgstr "يجب ان يكون التاريخ مقابل للفتره المحدده %s"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__theoritical_amount
|
#: model:ir.model.fields,field_description:account_budget_custom.field_crossovered_budget_lines__theoritical_amount
|
||||||
msgid "Theoretical Amount"
|
msgid "Theoretical Amount"
|
||||||
msgstr "القيمة النظرية"
|
msgstr "القيمة النظرية"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: code:addons/account_budget_custom/models/account_budget.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "This position can not be deleted"
|
|
||||||
msgstr "لا يمكن حذف مركز موازنة"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_budget_operations
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.view_budget_operations
|
||||||
msgid "To"
|
msgid "To"
|
||||||
|
|
@ -812,6 +870,13 @@ msgstr "إجمالي المبلغ"
|
||||||
msgid "Total amount in services request line"
|
msgid "Total amount in services request line"
|
||||||
msgstr "المبلغ"
|
msgstr "المبلغ"
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:account_budget_custom.field_crossovered_budget_lines__practical_amount
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of money that has been spent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__operation_type__transfer
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__operation_type__transfer
|
||||||
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__type__transfer
|
#: model:ir.model.fields.selection,name:account_budget_custom.selection__budget_operations__type__transfer
|
||||||
|
|
@ -865,9 +930,10 @@ msgstr "نهاية السنة"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
|
#: code:addons/account_budget_custom/models/budget_operations.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You can transfer to approved budget only"
|
msgid "You can transfer to approved budget only"
|
||||||
msgstr ""
|
msgstr "يمكنك التحويل الى موازنة معتمدة فقط"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/models/account_budget.py:0
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
|
|
@ -877,11 +943,6 @@ msgstr "لا يمكن حذف موازنة ليست في مرحلة مسودة"
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/models/account_budget.py:0
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
#, python-format
|
|
||||||
msgid "You can not take more than the remaining amount"
|
|
||||||
msgstr "لا يمكن أخذ أكثر من المبلغ المتبقي"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: code:addons/account_budget_custom/models/account_budget.py:0
|
#: code:addons/account_budget_custom/models/account_budget.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You can not take more than the remaining amount.."
|
msgid "You can not take more than the remaining amount.."
|
||||||
|
|
@ -985,8 +1046,13 @@ msgstr ""
|
||||||
msgid "تاريخ البدء"
|
msgid "تاريخ البدء"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_budget_custom
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_budget_custom.crossovered_budget_view_form
|
||||||
|
msgid "مبلغ نهائي"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: account_budget_custom
|
#. module: account_budget_custom
|
||||||
#: code:addons/account_budget_custom/reports/budget_report_xlsx.py:0
|
#: code:addons/account_budget_custom/reports/budget_report_xlsx.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "وضع المـوازنـة"
|
msgid "وضع المـوازنـة"
|
||||||
msgstr ""
|
msgstr "بند المـوازنـة"
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,6 @@ from odoo import api, fields, models, _
|
||||||
from odoo.exceptions import UserError, ValidationError
|
from odoo.exceptions import UserError, ValidationError
|
||||||
|
|
||||||
|
|
||||||
class AccountBudgetPost(models.Model):
|
|
||||||
_inherit = "account.budget.post"
|
|
||||||
|
|
||||||
def unlink(self):
|
|
||||||
raise ValidationError(_('This position can not be deleted'))
|
|
||||||
# return super(AccountBudgetPost, self).unlink()
|
|
||||||
|
|
||||||
|
|
||||||
class CrossoveredBudget(models.Model):
|
class CrossoveredBudget(models.Model):
|
||||||
_inherit = "crossovered.budget"
|
_inherit = "crossovered.budget"
|
||||||
_order = "create_date desc"
|
_order = "create_date desc"
|
||||||
|
|
@ -18,6 +10,7 @@ class CrossoveredBudget(models.Model):
|
||||||
currency_id = fields.Many2one('res.currency', string='Currency',
|
currency_id = fields.Many2one('res.currency', string='Currency',
|
||||||
readonly=True, required=True,
|
readonly=True, required=True,
|
||||||
default=lambda self: self.env.user.company_id.currency_id.id)
|
default=lambda self: self.env.user.company_id.currency_id.id)
|
||||||
|
crossovered_budget_line = fields.One2many(copy=False)
|
||||||
|
|
||||||
def unlink(self):
|
def unlink(self):
|
||||||
for budget in self:
|
for budget in self:
|
||||||
|
|
@ -25,36 +18,114 @@ class CrossoveredBudget(models.Model):
|
||||||
raise UserError(_('You can not delete budget not in draft state'))
|
raise UserError(_('You can not delete budget not in draft state'))
|
||||||
return super(CrossoveredBudget, self).unlink()
|
return super(CrossoveredBudget, self).unlink()
|
||||||
|
|
||||||
|
def copy(self, default=None):
|
||||||
|
default = dict(default or {})
|
||||||
|
default.update({
|
||||||
|
'name': self.name + ' (copy)',
|
||||||
|
'state': 'draft',
|
||||||
|
})
|
||||||
|
return super(CrossoveredBudget, self).copy(default)
|
||||||
|
|
||||||
|
# check that budget period doesn't overlap with another budget
|
||||||
|
@api.constrains('crossovered_budget_line', 'date_from', 'date_to')
|
||||||
|
def _check_budget_line_period(self):
|
||||||
|
for budget in self:
|
||||||
|
if budget.state == 'done':
|
||||||
|
continue
|
||||||
|
for line in budget.crossovered_budget_line:
|
||||||
|
domain = [
|
||||||
|
('crossovered_budget_id.date_from', '<=', budget.date_to),
|
||||||
|
('crossovered_budget_id.date_to', '>=', budget.date_from),
|
||||||
|
('crossovered_budget_id.state', '=', 'done'),
|
||||||
|
('id', '!=', line.id),
|
||||||
|
('analytic_account_id', '=', line.analytic_account_id.id),
|
||||||
|
('general_budget_id', '=', line.general_budget_id.id),
|
||||||
|
]
|
||||||
|
if self.env['crossovered.budget.lines'].search_count(domain):
|
||||||
|
raise ValidationError(_('Budget lines can not be overlaped with another.'))
|
||||||
|
|
||||||
|
|
||||||
class CrossoveredBudgetLines(models.Model):
|
class CrossoveredBudgetLines(models.Model):
|
||||||
_inherit = "crossovered.budget.lines"
|
_inherit = "crossovered.budget.lines"
|
||||||
|
|
||||||
reserved_percent = fields.Float(related='crossovered_budget_id.reserved_percent', string='Reserved Percent')
|
reserved_percent = fields.Float(related='crossovered_budget_id.reserved_percent', string='Reserved Percent')
|
||||||
reserved_amount = fields.Float(string='Reserved Amount', readonly=True, compute='_compute_reserved_amount')
|
reserved_amount = fields.Float(string='Reserved Amount', readonly=True, compute='_compute_reserved_amount')
|
||||||
# pull_out = fields.Float(string='Pull Out', compute='_compute_operations_amount', store=True, tracking=True)
|
pull_out = fields.Monetary(string='Pull Out', compute='_compute_pull_out',
|
||||||
pull_out = fields.Monetary(string='Pull Out')
|
help=_('Amount of money that has been pulled out'),store=True)
|
||||||
|
|
||||||
provide = fields.Float(string='Provide', compute='_compute_operations_amount', store=True)
|
provide = fields.Float(string='Provide', compute='_compute_provide',
|
||||||
remain = fields.Float(string='Remain of Christening', compute='_compute_operations_amount')
|
help=_('Amount of money that has been provided'),store=True)
|
||||||
budget_confirm_amount = fields.Float(string='Confirmation Amount', compute='_compute_operations_amount')
|
|
||||||
|
remain = fields.Float(string='Remain of Christening', compute='_compute_remain',help=_('Amount of money that has been remained'))
|
||||||
|
above_remain = fields.Float(string='Exceed Amount', compute='_compute_remain',
|
||||||
|
help=_('Amount of money that has been exceeded'))
|
||||||
purchase_remain = fields.Float(store=True)
|
purchase_remain = fields.Float(store=True)
|
||||||
practical_amount = fields.Float(compute='_compute_practical_amount', string='Practical Amount', digits=0,
|
practical_amount = fields.Float(compute='_compute_practical_amount', string='Practical Amount', digits=0,
|
||||||
store=False)
|
store=False, help=_('Total amount of money that has been spent'))
|
||||||
theoritical_amount = fields.Float(compute='_compute_theoritical_amount', string='Theoretical Amount', digits=0,
|
theoritical_amount = fields.Float(compute='_compute_theoritical_amount', string='Theoretical Amount', digits=0,
|
||||||
store=True)
|
store=True)
|
||||||
percentage = fields.Float(compute='_compute_percentage', string='Achievement', store=False, digits=(16, 4))
|
percentage = fields.Float(compute='_compute_percentage', string='Achievement', store=False, digits=(16, 4))
|
||||||
from_operation_ids = fields.One2many('budget.operations', 'from_budget_line_id', string='From Operation')
|
from_operation_ids = fields.One2many('budget.operations', 'from_budget_line_id', string='From Operation')
|
||||||
to_operation_ids = fields.One2many('budget.operations', 'to_budget_line_id', string='Cost Center')
|
to_operation_ids = fields.One2many('budget.operations', 'to_budget_line_id', string='Cost Center')
|
||||||
reserve = fields.Float(string='Last Reserve Amount')
|
|
||||||
confirm = fields.Float(string='Confirm Amount')
|
|
||||||
year_end = fields.Boolean(compute="get_year_end")
|
year_end = fields.Boolean(compute="get_year_end")
|
||||||
is_transfered = fields.Boolean(default=False)
|
|
||||||
final_amount = fields.Float(compute='_compute_final_amount')
|
|
||||||
|
|
||||||
@api.depends('planned_amount', 'pull_out', 'provide')
|
final_amount = fields.Float(string='Final Amount', compute='_compute_final_amount',
|
||||||
|
help=_('Final amount of money that has been provided'),store=True)
|
||||||
|
|
||||||
|
reserve = fields.Float(string='Reserve Amount', compute='_compute_reserve',
|
||||||
|
help=_('Total amount of reserved purchase orders'))
|
||||||
|
|
||||||
|
confirm = fields.Float(string='Confirm Amount', compute='_compute_confirm',
|
||||||
|
help=_('Total amount of confirmed purchase orders'))
|
||||||
|
|
||||||
|
@api.depends('analytic_account_id')
|
||||||
|
def _compute_confirm(self):
|
||||||
|
for rec in self:
|
||||||
|
orders = self.env['purchase.order.line'].search(
|
||||||
|
[('account_analytic_id', '=', rec.analytic_account_id.id),
|
||||||
|
('order_id.state', 'in', ['purchase'])]).mapped('order_id')
|
||||||
|
total_orders = sum(orders.mapped('amount_total'))
|
||||||
|
invoiced = self.env['account.move'].search(
|
||||||
|
[('purchase_id', 'in', orders.ids), ('state', 'not in', ['draft', 'cancel'])]).mapped('amount_total')
|
||||||
|
rec.confirm = (total_orders - sum(invoiced)) * -1
|
||||||
|
|
||||||
|
@api.depends('analytic_account_id')
|
||||||
|
def _compute_reserve(self):
|
||||||
|
for rec in self:
|
||||||
|
orders = self.env['purchase.order.line'].search(
|
||||||
|
[('account_analytic_id', '=', rec.analytic_account_id.id),
|
||||||
|
('order_id.state', 'in', ['draft', 'sent', 'to approve'])]).mapped('order_id')
|
||||||
|
total_orders = sum(orders.mapped('amount_total'))
|
||||||
|
rec.reserve = total_orders * -1
|
||||||
|
|
||||||
|
@api.depends('planned_amount', 'provide', 'pull_out')
|
||||||
def _compute_final_amount(self):
|
def _compute_final_amount(self):
|
||||||
|
for rec in self:
|
||||||
|
rec.final_amount = rec.planned_amount + rec.provide + rec.pull_out
|
||||||
|
|
||||||
|
@api.depends('from_operation_ids')
|
||||||
|
def _compute_pull_out(self):
|
||||||
for line in self:
|
for line in self:
|
||||||
line.final_amount = line.planned_amount + line.provide - line.pull_out
|
pull_out = sum(op.amount + op.purchase_remind for op in
|
||||||
|
line.from_operation_ids.filtered(lambda x: x.state == 'confirmed') if
|
||||||
|
op.operation_type == 'transfer' or op.operation_type == 'decrease')
|
||||||
|
line.pull_out = pull_out if line.planned_amount < 0 else pull_out * -1
|
||||||
|
|
||||||
|
@api.depends('to_operation_ids')
|
||||||
|
def _compute_provide(self):
|
||||||
|
for line in self:
|
||||||
|
provide = sum(op.amount + op.purchase_remind for op in
|
||||||
|
line.to_operation_ids.filtered(lambda x: x.state == 'confirmed') if
|
||||||
|
op.operation_type == 'transfer' or op.operation_type == 'increase')
|
||||||
|
line.provide = provide * -1 if line.planned_amount < 0 else provide
|
||||||
|
|
||||||
|
@api.depends('to_operation_ids', 'from_operation_ids')
|
||||||
|
def _compute_remain(self):
|
||||||
|
for line in self:
|
||||||
|
remain_value = ((abs(line.final_amount) - abs(line.reserve) - abs(line.confirm) - abs(
|
||||||
|
line.practical_amount)) * -1)
|
||||||
|
line.remain = 0 if remain_value > 0 else remain_value
|
||||||
|
line.above_remain = remain_value if remain_value > 0 else 0
|
||||||
|
|
||||||
def get_year_end(self):
|
def get_year_end(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
|
|
@ -85,69 +156,6 @@ class CrossoveredBudgetLines(models.Model):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@api.depends('from_operation_ids', 'to_operation_ids')
|
|
||||||
def _compute_operations_amount(self):
|
|
||||||
if not self.ids: return
|
|
||||||
for line in self:
|
|
||||||
pull_out = provide = budget_confirm_amount = purchase_remind = reserve_amount = 0.0
|
|
||||||
date_to = self.env.context.get('wizard_date_to') or line.date_to
|
|
||||||
date_from = self.env.context.get(
|
|
||||||
'wizard_date_from') or line.date_from
|
|
||||||
|
|
||||||
if line.analytic_account_id.id:
|
|
||||||
if 'reserved' not in self.env.context:
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT SUM(amount)
|
|
||||||
FROM budget_operations
|
|
||||||
WHERE from_budget_line_id=%s
|
|
||||||
AND (date between %s AND %s)
|
|
||||||
AND state='confirmed'""",
|
|
||||||
(line._origin.id, date_from, date_to,))
|
|
||||||
pull_out = self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
if 'reserved' in self.env.context:
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT SUM(amount)
|
|
||||||
FROM budget_operations
|
|
||||||
WHERE from_budget_line_id=%s
|
|
||||||
AND (date between %s AND %s)
|
|
||||||
AND state='confirmed'
|
|
||||||
AND from_reserved=%s""",
|
|
||||||
(line._origin.id, date_from, date_to, self.env.context['reserved']))
|
|
||||||
pull_out = self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT SUM(amount)
|
|
||||||
FROM budget_operations
|
|
||||||
WHERE to_budget_line_id=%s
|
|
||||||
AND (date between %s AND %s)
|
|
||||||
AND state='confirmed'""",
|
|
||||||
(line._origin.id, date_from, date_to,))
|
|
||||||
provide = self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT SUM(purchase_remind)
|
|
||||||
FROM budget_operations
|
|
||||||
WHERE to_budget_line_id=%s
|
|
||||||
AND (date between %s AND %s)
|
|
||||||
AND state='confirmed'""",
|
|
||||||
(line._origin.id, date_from, date_to,))
|
|
||||||
reserve_amount = self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT SUM(amount)
|
|
||||||
FROM budget_confirmation_line
|
|
||||||
WHERE budget_line_id=%s
|
|
||||||
AND (date between %s AND %s)
|
|
||||||
AND state='done'""",
|
|
||||||
(line._origin.id, date_from, date_to,))
|
|
||||||
budget_confirm_amount = self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
line.provide = provide
|
|
||||||
line.budget_confirm_amount = budget_confirm_amount
|
|
||||||
# line.remain = line.planned_amount + provide + line.pull_out - line.practical_amount + line.reserve + line.purchase_remain
|
|
||||||
line.remain = line.final_amount - line.practical_amount
|
|
||||||
|
|
||||||
@api.depends('analytic_account_id', 'planned_amount', 'practical_amount')
|
@api.depends('analytic_account_id', 'planned_amount', 'practical_amount')
|
||||||
def name_get(self):
|
def name_get(self):
|
||||||
result = []
|
result = []
|
||||||
|
|
@ -155,13 +163,7 @@ class CrossoveredBudgetLines(models.Model):
|
||||||
for line in self:
|
for line in self:
|
||||||
name = ''
|
name = ''
|
||||||
name += line.analytic_account_id and line.analytic_account_id.name or '' + ' ' + _('remaining') + ' '
|
name += line.analytic_account_id and line.analytic_account_id.name or '' + ' ' + _('remaining') + ' '
|
||||||
|
name += str(line.final_amount)
|
||||||
# check if reserved is needed
|
|
||||||
if self.env.context.get('reserved', False):
|
|
||||||
name += str(line.reserved_amount)
|
|
||||||
|
|
||||||
if not self.env.context.get('reserved', False):
|
|
||||||
name += str(line.remain)
|
|
||||||
|
|
||||||
result.append((line.id, name))
|
result.append((line.id, name))
|
||||||
return result
|
return result
|
||||||
|
|
@ -215,20 +217,41 @@ class CrossoveredBudgetLines(models.Model):
|
||||||
|
|
||||||
def _check_amount(self, amount=0, purchase_remind=0, transfer=False):
|
def _check_amount(self, amount=0, purchase_remind=0, transfer=False):
|
||||||
for obj in self:
|
for obj in self:
|
||||||
if self.from_operation_ids.operation_type=='transfer' and self.from_operation_ids.purchase_remind>obj.final_amount:
|
|
||||||
raise ValidationError(_('''You can not take more than the remaining amount..'''))
|
|
||||||
# if obj.purchase_remain>
|
|
||||||
|
|
||||||
reserved_amount = obj.crossovered_budget_id.reserved_percent * \
|
reserved_amount = obj.crossovered_budget_id.reserved_percent * \
|
||||||
obj.planned_amount / 100.0
|
obj.planned_amount / 100.0
|
||||||
|
|
||||||
if obj.with_context({'reserved': True}).pull_out > reserved_amount:
|
if obj.with_context({'reserved': True}).pull_out > reserved_amount:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_('''You can not take more than the reserved amount.'''))
|
_('''You can not take more than the reserved amount.'''))
|
||||||
if obj.planned_amount < 0:
|
|
||||||
if transfer and obj.purchase_remain != purchase_remind:
|
|
||||||
raise ValidationError(_('''You can not take more than the remaining amount..'''))
|
|
||||||
else:
|
|
||||||
|
|
||||||
if abs(obj.remain) < amount or obj.purchase_remain < purchase_remind:
|
if transfer and abs(obj.remain) < abs(purchase_remind):
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_('''You can not take more than the remaining amount'''))
|
_('''You can not take more than the remaining amount..'''))
|
||||||
|
|
||||||
|
if amount and amount > obj.remain:
|
||||||
|
raise ValidationError(
|
||||||
|
_('''You can not take more than the remaining amount..'''))
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
def action_view_sale_orders(self):
|
||||||
|
self.ensure_one()
|
||||||
|
sale_order_ids = self._get_sale_orders().ids
|
||||||
|
action = {
|
||||||
|
'res_model': 'sale.order',
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
}
|
||||||
|
if len(sale_order_ids) == 1:
|
||||||
|
action.update({
|
||||||
|
'view_mode': 'form',
|
||||||
|
'res_id': sale_order_ids[0],
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
action.update({
|
||||||
|
'name': _('Sources Sale Orders %s', self.name),
|
||||||
|
'domain': [('id', 'in', sale_order_ids)],
|
||||||
|
'view_mode': 'tree,form',
|
||||||
|
})
|
||||||
|
return action
|
||||||
|
|
|
||||||
9
odex25_accounting/account_budget_custom/models/budget_confirmation.py
Normal file → Executable file
9
odex25_accounting/account_budget_custom/models/budget_confirmation.py
Normal file → Executable file
|
|
@ -198,6 +198,11 @@ class BudgetConfirmationLine(models.Model):
|
||||||
description = fields.Text(
|
description = fields.Text(
|
||||||
string='Description'
|
string='Description'
|
||||||
)
|
)
|
||||||
|
crossovered_budget_id = fields.Many2one(
|
||||||
|
comodel_name='crossovered.budget',
|
||||||
|
string='Budget',
|
||||||
|
related='budget_line_id.crossovered_budget_id',
|
||||||
|
)
|
||||||
|
|
||||||
def check_budget(self):
|
def check_budget(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -245,4 +250,8 @@ class RejectWizard(models.TransientModel):
|
||||||
raise ValidationError(_('Sorry This object have no field named Selection Reason'))
|
raise ValidationError(_('Sorry This object have no field named Selection Reason'))
|
||||||
else:
|
else:
|
||||||
origin_rec.write({'reject_reason': self.reject_reason})
|
origin_rec.write({'reject_reason': self.reject_reason})
|
||||||
|
if origin_rec.po_id:
|
||||||
|
origin_rec.po_id.message_post(body=self.reject_reason)
|
||||||
|
if origin_rec.invoice_id:
|
||||||
|
origin_rec.invoice_id.message_post(body=self.reject_reason)
|
||||||
return origin_rec.with_context({'reject_reason': self.reject_reason}).cancel()
|
return origin_rec.with_context({'reject_reason': self.reject_reason}).cancel()
|
||||||
65
odex25_accounting/account_budget_custom/models/budget_operations.py
Normal file → Executable file
65
odex25_accounting/account_budget_custom/models/budget_operations.py
Normal file → Executable file
|
|
@ -20,21 +20,21 @@ class BudgetOperations(models.Model):
|
||||||
|
|
||||||
name = fields.Char(string='Name', default='/')
|
name = fields.Char(string='Name', default='/')
|
||||||
department_id = fields.Many2one(comodel_name='hr.department', string='Department')
|
department_id = fields.Many2one(comodel_name='hr.department', string='Department')
|
||||||
from_crossovered_budget_id = fields.Many2one(comodel_name='crossovered.budget', string='Budget', tracking=True)
|
from_crossovered_budget_id = fields.Many2one(comodel_name='crossovered.budget', string='Budget', tracking=True,copy=False)
|
||||||
from_budget_line_id = fields.Many2one(comodel_name='crossovered.budget.lines', string='Cost Center', tracking=True)
|
from_budget_line_id = fields.Many2one(comodel_name='crossovered.budget.lines', string='Cost Center', tracking=True,copy=False)
|
||||||
to_crossovered_budget_id = fields.Many2one(comodel_name='crossovered.budget', string='Budget', tracking=True)
|
to_crossovered_budget_id = fields.Many2one(comodel_name='crossovered.budget', string='Budget', tracking=True,copy=False)
|
||||||
to_budget_line_id = fields.Many2one(comodel_name='crossovered.budget.lines', string='Cost Center', tracking=True)
|
to_budget_line_id = fields.Many2one(comodel_name='crossovered.budget.lines', string='Cost Center', tracking=True,copy=False)
|
||||||
amount = fields.Monetary(string='Amount', tracking=True)
|
amount = fields.Monetary(string='Amount', tracking=True)
|
||||||
currency_id = fields.Many2one(comodel_name='res.currency', string='Currency', readonly=True, required=True,
|
currency_id = fields.Many2one(comodel_name='res.currency', string='Currency', readonly=True, required=True,
|
||||||
default=lambda self: self.env.user.company_id.currency_id.id)
|
default=lambda self: self.env.user.company_id.currency_id.id)
|
||||||
state = fields.Selection(selection=[('draft', 'Draft'), ('confirmed', 'Confirmed')],
|
state = fields.Selection(selection=[('draft', 'Draft'), ('confirmed', 'Confirmed')],
|
||||||
default='draft', string='Status', readonly=True, tracking=True)
|
default='draft', string='Status', readonly=True, tracking=True,copy=False)
|
||||||
type = fields.Selection(selection=[('unlock', 'Unlock'), ('transfer', 'Transfer')], default='transfer',
|
type = fields.Selection(selection=[('unlock', 'Unlock'), ('transfer', 'Transfer')], default='transfer',
|
||||||
string='type', readonly=True, tracking=True)
|
string='type', readonly=True, tracking=True)
|
||||||
date = fields.Date()
|
date = fields.Date()
|
||||||
from_reserved = fields.Boolean(string='Reserve?', tracking=True)
|
from_reserved = fields.Boolean(string='Reserve?', tracking=True,copy=False)
|
||||||
from_budget_post_id = fields.Many2one(comodel_name='account.budget.post', string='Budget Post', tracking=True)
|
from_budget_post_id = fields.Many2one(comodel_name='account.budget.post', string='Budget Post', tracking=True,copy=False)
|
||||||
to_budget_post_id = fields.Many2one(comodel_name='account.budget.post', string='Budget Post', tracking=True)
|
to_budget_post_id = fields.Many2one(comodel_name='account.budget.post', string='Budget Post', tracking=True,copy=False)
|
||||||
operation_type = fields.Selection(
|
operation_type = fields.Selection(
|
||||||
selection=[('transfer', 'Transfer'), ('increase', 'Increase'), ('decrease', 'Decrease')],
|
selection=[('transfer', 'Transfer'), ('increase', 'Increase'), ('decrease', 'Decrease')],
|
||||||
default='transfer', string='Operation Type', required=True, tracking=True)
|
default='transfer', string='Operation Type', required=True, tracking=True)
|
||||||
|
|
@ -68,6 +68,18 @@ class BudgetOperations(models.Model):
|
||||||
self.from_budget_post_id = False
|
self.from_budget_post_id = False
|
||||||
self.from_reserved = False
|
self.from_reserved = False
|
||||||
|
|
||||||
|
@api.onchange('from_crossovered_budget_id', 'to_crossovered_budget_id', 'date')
|
||||||
|
def _onchange_budget_check_period(self):
|
||||||
|
if self.from_crossovered_budget_id and self.date:
|
||||||
|
if self.from_crossovered_budget_id.date_from > self.date or self.from_crossovered_budget_id.date_to < self.date:
|
||||||
|
raise ValidationError(
|
||||||
|
_('The date must be between the budget %s post period') % (self.from_crossovered_budget_id.name))
|
||||||
|
|
||||||
|
if self.to_crossovered_budget_id and self.date:
|
||||||
|
if self.to_crossovered_budget_id.date_from > self.date or self.to_crossovered_budget_id.date_to < self.date:
|
||||||
|
raise ValidationError(
|
||||||
|
_('The date must be between the budget %s post period') % (self.from_crossovered_budget_id.name))
|
||||||
|
|
||||||
@api.onchange('from_budget_post_id')
|
@api.onchange('from_budget_post_id')
|
||||||
def _onchange_from_budget_post(self):
|
def _onchange_from_budget_post(self):
|
||||||
domain = [('id', 'in', [])]
|
domain = [('id', 'in', [])]
|
||||||
|
|
@ -86,7 +98,7 @@ class BudgetOperations(models.Model):
|
||||||
if self.to_budget_post_id:
|
if self.to_budget_post_id:
|
||||||
budget_line_obj = self.env['crossovered.budget.lines']
|
budget_line_obj = self.env['crossovered.budget.lines']
|
||||||
search_domain = [('general_budget_id', '=', self.to_budget_post_id.id)]
|
search_domain = [('general_budget_id', '=', self.to_budget_post_id.id)]
|
||||||
if self.operation_type == 'transfer' and self.from_crossovered_budget_id:
|
if self.operation_type == 'transfer' and self.from_crossovered_budget_id.date_to:
|
||||||
search_domain += [('date_to', '>', str(self.from_crossovered_budget_id.date_to))]
|
search_domain += [('date_to', '>', str(self.from_crossovered_budget_id.date_to))]
|
||||||
budget_line = budget_line_obj.search(search_domain)
|
budget_line = budget_line_obj.search(search_domain)
|
||||||
domain = [('id', 'in', budget_line.mapped('crossovered_budget_id').ids)]
|
domain = [('id', 'in', budget_line.mapped('crossovered_budget_id').ids)]
|
||||||
|
|
@ -118,25 +130,26 @@ class BudgetOperations(models.Model):
|
||||||
self.state = 'draft'
|
self.state = 'draft'
|
||||||
|
|
||||||
def confirm(self):
|
def confirm(self):
|
||||||
"""
|
if self.from_crossovered_budget_id and self.date and self.operation_type in ['transfer', 'decrease']:
|
||||||
"""
|
if self.from_crossovered_budget_id.date_from > self.date or self.from_crossovered_budget_id.date_to < self.date:
|
||||||
if self.date and self.to_crossovered_budget_id:
|
raise ValidationError(
|
||||||
|
_('The date must be between the budget %s post period') % (self.from_crossovered_budget_id.name))
|
||||||
|
|
||||||
budget_start_date = self.to_crossovered_budget_id.date_from
|
if self.to_crossovered_budget_id and self.date and self.operation_type in ['transfer', 'increase']:
|
||||||
budget_end_date = self.to_crossovered_budget_id.date_to
|
if self.to_crossovered_budget_id.date_from > self.date or self.to_crossovered_budget_id.date_to < self.date:
|
||||||
|
raise ValidationError(
|
||||||
|
_('The date must be between the budget %s post period') % (self.from_crossovered_budget_id.name))
|
||||||
|
|
||||||
|
if self.to_crossovered_budget_id.state != 'done' and self.operation_type in ['transfer', 'increase']:
|
||||||
if self.date < budget_start_date or self.date > budget_end_date:
|
|
||||||
raise ValidationError(_('The operation date must be within the budget duration.'))
|
|
||||||
if self.to_crossovered_budget_id and self.to_crossovered_budget_id.state != 'done':
|
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_('You can transfer to approved budget only'))
|
_('You can transfer to approved budget only'))
|
||||||
self.to_budget_line_id.pull_out = self.purchase_remind
|
|
||||||
transfer = True if self.operation_type == 'transfer' else False
|
if self.from_crossovered_budget_id.state != 'done' and self.operation_type in ['transfer', 'decrease']:
|
||||||
self.from_budget_line_id._check_amount(self.amount, self.purchase_remind, transfer)
|
raise ValidationError(
|
||||||
# self.from_budget_line_id.is_transfered = True
|
_('You can transfer to approved budget only'))
|
||||||
if self.type == 'unlock':
|
|
||||||
self.from_reserved = True
|
if self.operation_type=='transfer':
|
||||||
self.to_crossovered_budget_id = self.from_crossovered_budget_id.id
|
if abs(self.from_budget_line_id.final_amount) < abs(self.purchase_remind):
|
||||||
self.to_budget_line_id = self.from_budget_line_id.id
|
raise ValidationError(
|
||||||
|
_('The amount must be less than or equal to the budget line final amount'))
|
||||||
self.state = 'confirmed'
|
self.state = 'confirmed'
|
||||||
|
|
|
||||||
0
odex25_accounting/account_budget_custom/reports/budget_report_xlsx.py
Normal file → Executable file
0
odex25_accounting/account_budget_custom/reports/budget_report_xlsx.py
Normal file → Executable file
|
|
@ -3,14 +3,14 @@
|
||||||
<data>
|
<data>
|
||||||
<record id="group_budget_user" model="res.groups">
|
<record id="group_budget_user" model="res.groups">
|
||||||
<field name="name">Budget User</field>
|
<field name="name">Budget User</field>
|
||||||
<!-- <field name="category_id" ref="base.module_category_accounting_and_finance"/>-->
|
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
|
||||||
<field name="implied_ids" eval="[(4, ref('analytic.group_analytic_accounting')),
|
<field name="implied_ids" eval="[(4, ref('analytic.group_analytic_accounting')),
|
||||||
(4, ref('account.group_account_user'))]"/>
|
(4, ref('account.group_account_user'))]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="group_department_manager_budget" model="res.groups">
|
<record id="group_department_manager_budget" model="res.groups">
|
||||||
<field name="name">Budget Department Manager</field>
|
<field name="name">Budget Department Manager</field>
|
||||||
<!-- <field name="category_id" ref="base.module_category_accounting_and_finance"/>-->
|
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
|
||||||
<field name="implied_ids" eval="[(4, ref('account_budget_custom.group_budget_user'))]"/>
|
<field name="implied_ids" eval="[(4, ref('account_budget_custom.group_budget_user'))]"/>
|
||||||
|
|
||||||
<!-- <field name="implied_ids" eval="[(4, ref('analytic.group_analytic_accounting')),(4, ref('account.group_account_user'))]"/> -->
|
<!-- <field name="implied_ids" eval="[(4, ref('analytic.group_analytic_accounting')),(4, ref('account.group_account_user'))]"/> -->
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<record id="group_manager_budget" model="res.groups">
|
<record id="group_manager_budget" model="res.groups">
|
||||||
<field name="name">Budget Executive Director</field>
|
<field name="name">Budget Executive Director</field>
|
||||||
<!-- <field name="category_id" ref="base.module_category_accounting_and_finance"/>-->
|
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
|
||||||
<field name="implied_ids" eval="[(4, ref('account_budget_custom.group_budget_user'))]"/>
|
<field name="implied_ids" eval="[(4, ref('account_budget_custom.group_budget_user'))]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
||||||
0
odex25_accounting/account_budget_custom/security/ir.model.access.csv
Normal file → Executable file
0
odex25_accounting/account_budget_custom/security/ir.model.access.csv
Normal file → Executable file
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
0
odex25_accounting/account_budget_custom/static/fonts/ae_AlMohanad.ttf
Normal file → Executable file
0
odex25_accounting/account_budget_custom/static/fonts/ae_AlMohanad.ttf
Normal file → Executable file
0
odex25_accounting/account_budget_custom/static/src/css/website_rtl.css
Normal file → Executable file
0
odex25_accounting/account_budget_custom/static/src/css/website_rtl.css
Normal file → Executable file
73
odex25_accounting/account_budget_custom/views/account_budget_views.xml
Normal file → Executable file
73
odex25_accounting/account_budget_custom/views/account_budget_views.xml
Normal file → Executable file
|
|
@ -23,21 +23,41 @@
|
||||||
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='date_to']" position="attributes">
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='date_to']" position="attributes">
|
||||||
<attribute name="invisible">1</attribute>
|
<attribute name="invisible">1</attribute>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='analytic_account_id']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='planned_amount']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='practical_amount']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='theoritical_amount']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='percentage']" position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='general_budget_id']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="optional">show</attribute>
|
||||||
|
</xpath>
|
||||||
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='paid_date']" position="replace"/>
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='paid_date']" position="replace"/>
|
||||||
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='planned_amount']" position="after">
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='planned_amount']" position="after">
|
||||||
<field name="provide" readonly="1" sum="Provided Amount" widget="monetary"/>
|
<field name="provide" readonly="1" sum="Provided Amount" widget="monetary" optional="show"/>
|
||||||
|
<field name="pull_out" readonly="1" sum="Pull Out Amount" widget="monetary" optional="show"/>
|
||||||
<field name="pull_out" readonly="1" sum="Pull Out Amount" widget="monetary"/>
|
<field name="final_amount" readonly="1" sum="Final Amount" widget="monetary" optional="show"
|
||||||
<field name="final_amount" readonly="1" sum="Final Amount" widget="monetary"/>
|
string="مبلغ نهائي"/>
|
||||||
|
|
||||||
<field name="reserve" readonly="1" sum="Reserve Amount" widget="monetary"/>
|
|
||||||
|
|
||||||
<!--field name="reserved_amount" readonly="1" sum="Reserved Amount" widget="monetary"/-->
|
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='theoritical_amount']"
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='theoritical_amount']"
|
||||||
position="after">
|
position="after">
|
||||||
<field name="purchase_remain" widget="monetary"/>
|
<field name="purchase_remain" widget="monetary" optional="show" invisible="1"/>
|
||||||
<field name="remain" readonly="1" sum="Remain Amount" widget="monetary"/>
|
<field name="remain" readonly="1" sum="Remain Amount" widget="monetary" optional="show"/>
|
||||||
|
<field name="above_remain" readonly="1" sum="Exceed Amount" widget="monetary" optional="show"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='percentage']" position="after">
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='percentage']" position="after">
|
||||||
<button
|
<button
|
||||||
|
|
@ -45,6 +65,7 @@
|
||||||
type="object"
|
type="object"
|
||||||
string="Transfer"
|
string="Transfer"
|
||||||
class="oe_highlight" attrs="{'invisible':[('year_end', '=',False)]}"
|
class="oe_highlight" attrs="{'invisible':[('year_end', '=',False)]}"
|
||||||
|
optional="show"
|
||||||
/>
|
/>
|
||||||
<field name="crossovered_budget_state" invisible="1"/>
|
<field name="crossovered_budget_state" invisible="1"/>
|
||||||
<field name="year_end" invisible="1"/>
|
<field name="year_end" invisible="1"/>
|
||||||
|
|
@ -64,6 +85,9 @@
|
||||||
<field name="date_from" type="col"/>
|
<field name="date_from" type="col"/>
|
||||||
<field name="date_to" type="col"/>
|
<field name="date_to" type="col"/>
|
||||||
<field name="planned_amount" type="measure"/>
|
<field name="planned_amount" type="measure"/>
|
||||||
|
<field name="provide" type="measure"/>
|
||||||
|
<field name="pull_out" type="measure"/>
|
||||||
|
<field name="final_amount" type="measure"/>
|
||||||
<field name="practical_amount" type="measure"/>
|
<field name="practical_amount" type="measure"/>
|
||||||
<field name="theoritical_amount" type="measure"/>
|
<field name="theoritical_amount" type="measure"/>
|
||||||
<field name="percentage" type="measure"/>
|
<field name="percentage" type="measure"/>
|
||||||
|
|
@ -78,8 +102,13 @@
|
||||||
<graph string="Budget Lines">
|
<graph string="Budget Lines">
|
||||||
<field name="crossovered_budget_id"/>
|
<field name="crossovered_budget_id"/>
|
||||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" type="row"/>
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" type="row"/>
|
||||||
<field name="planned_amount" type="measure"/>
|
<field name="planned_amount" type="measure"/>
|
||||||
|
<field name="provide" type="measure"/>
|
||||||
|
<field name="pull_out" type="measure"/>
|
||||||
|
<field name="final_amount" type="measure"/>
|
||||||
<field name="practical_amount" type="measure"/>
|
<field name="practical_amount" type="measure"/>
|
||||||
|
<field name="theoritical_amount" type="measure"/>
|
||||||
|
<field name="percentage" type="measure"/>
|
||||||
</graph>
|
</graph>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
@ -92,17 +121,17 @@
|
||||||
<xpath expr="//tree" position="replace">
|
<xpath expr="//tree" position="replace">
|
||||||
<tree string="Budget Lines">
|
<tree string="Budget Lines">
|
||||||
<field name="crossovered_budget_id" invisible="1"/>
|
<field name="crossovered_budget_id" invisible="1"/>
|
||||||
<field name="general_budget_id"/>
|
<field name="general_budget_id" optional="show"/>
|
||||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" optional="show"/>
|
||||||
<field name="date_from"/>
|
<field name="planned_amount" optional="show"/>
|
||||||
<field name="date_to"/>
|
<field name="provide" optional="show"/>
|
||||||
<field name="paid_date" groups="base.group_no_one"/>
|
<field name="pull_out" optional="show"/>
|
||||||
<field name="planned_amount" widget="monetary"/>
|
<field name="final_amount" optional="show"/>
|
||||||
<field name="provide" readonly="1" sum="Provided Amount" widget="monetary"/>
|
<field name="practical_amount" optional="show"/>
|
||||||
<field name="pull_out" readonly="1" sum="Pull Out Amount" widget="monetary"/>
|
<field name="theoritical_amount" optional="show"/>
|
||||||
<field name="practical_amount" widget="monetary"/>
|
<field name="remain" optional="show"/>
|
||||||
<field name="remain" readonly="1" sum="Remain Amount" widget="monetary"/>
|
<field name="above_remain" optional="show"/>
|
||||||
<field name="percentage"/>
|
<field name="percentage" optional="show"/>
|
||||||
</tree>
|
</tree>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
||||||
15
odex25_accounting/account_budget_custom/views/budget_confirmation_view.xml
Normal file → Executable file
15
odex25_accounting/account_budget_custom/views/budget_confirmation_view.xml
Normal file → Executable file
|
|
@ -52,7 +52,6 @@
|
||||||
<tree string="Budget Confirmations" create="0" delete="0">
|
<tree string="Budget Confirmations" create="0" delete="0">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="date"/>
|
<field name="date"/>
|
||||||
<field name="date"/>
|
|
||||||
<field name="beneficiary_id"/>
|
<field name="beneficiary_id"/>
|
||||||
<field name="department_id"/>
|
<field name="department_id"/>
|
||||||
<field name="total_amount"/>
|
<field name="total_amount"/>
|
||||||
|
|
@ -105,6 +104,7 @@
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
<field name="ref" attrs="{'readonly':[('type','!=','purchase.order')]}"/>
|
<field name="ref" attrs="{'readonly':[('type','!=','purchase.order')]}"/>
|
||||||
<field name="description" attrs="{'readonly':[('type','!=','purchase.order')]}"/>
|
<field name="description" attrs="{'readonly':[('type','!=','purchase.order')]}"/>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
|
|
@ -115,13 +115,14 @@
|
||||||
<field name="lines_ids" readonly="1"
|
<field name="lines_ids" readonly="1"
|
||||||
options="{'no_create': True, 'no_open': True}">
|
options="{'no_create': True, 'no_open': True}">
|
||||||
<tree editable="top">
|
<tree editable="top">
|
||||||
<field name="account_id"/>
|
<field name="crossovered_budget_id" readonly="1"/>
|
||||||
<field name="analytic_account_id"/>
|
<field name="account_id" optional="show"/>
|
||||||
<field name="remain"/>
|
<field name="analytic_account_id" optional="show"/>
|
||||||
|
<field name="remain" optional="show"/>
|
||||||
|
|
||||||
<field name="amount"/>
|
<field name="amount" optional="show"/>
|
||||||
<field name="new_balance"/>
|
<field name="new_balance" optional="show"/>
|
||||||
<field name="description"/>
|
<field name="description" optional="show"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
|
|
||||||
2
odex25_accounting/account_budget_custom/views/budget_operations_view.xml
Normal file → Executable file
2
odex25_accounting/account_budget_custom/views/budget_operations_view.xml
Normal file → Executable file
|
|
@ -61,7 +61,7 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="date" attrs="{'readonly':[('state','!=','draft')]}" required="1"/>
|
<field name="date" attrs="{'readonly':[('state','!=','draft')]}" required="1"/>
|
||||||
<field name="amount" attrs="{'readonly':[('state','!=','draft')],'invisible':[('operation_type','=','transfer')]}"/>
|
<field name="amount" attrs="{'readonly':[('state','!=','draft')],'invisible':[('operation_type','=','transfer')]}"/>
|
||||||
<field name="purchase_remind" attrs="{'readonly':[('state','!=','draft')]}"/>
|
<field name="purchase_remind" attrs="{'invisible':[('operation_type','!=','transfer')]}" string="Amount"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 14.0\n"
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-07-28 11:05+0000\n"
|
"POT-Creation-Date: 2024-06-26 18:16+0000\n"
|
||||||
"PO-Revision-Date: 2022-07-28 11:05+0000\n"
|
"PO-Revision-Date: 2024-06-26 18:16+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
|
@ -21,28 +21,27 @@ msgid "Analytic Account"
|
||||||
msgstr "الحساب التحليلي"
|
msgstr "الحساب التحليلي"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__budget_approve
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__budget_approve
|
||||||
#, python-format
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__budget_approve
|
||||||
msgid "Approved"
|
msgid "Approved"
|
||||||
msgstr "موافقة"
|
msgstr "موافقة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__is_auto_check
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__budget_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_grant_project__is_auto_check
|
||||||
#, python-format
|
msgid "Auto Check"
|
||||||
msgid "Budget Check"
|
msgstr ""
|
||||||
msgstr "فحص الموازنة"
|
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model,name:exp_budget_check.model_budget_confirmation
|
#: model:ir.model,name:exp_budget_check.model_budget_confirmation
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
msgid "Budget Confirmation"
|
msgid "Budget Confirmation"
|
||||||
msgstr "تصديق الموازنة"
|
msgstr "تعميد الموازنة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model,name:exp_budget_check.model_crossovered_budget_lines
|
#: model:ir.model,name:exp_budget_check.model_crossovered_budget_lines
|
||||||
msgid "Budget Line"
|
msgid "Budget Line"
|
||||||
msgstr "خط الموازنة"
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__cancel
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__cancel
|
||||||
|
|
@ -54,10 +53,13 @@ msgstr "ملغي"
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__budget_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__budget_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__budget_check
|
||||||
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.hr_expense_view_form_inherit
|
||||||
msgid "Check Budget"
|
msgid "Check Budget"
|
||||||
msgstr "فحص الموازنة"
|
msgstr "فحص الموازنة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__confirm
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__confirm
|
||||||
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "تأكيد"
|
msgstr "تأكيد"
|
||||||
|
|
@ -66,7 +68,7 @@ msgstr "تأكيد"
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__confirm
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__confirm
|
||||||
#: model_terms:ir.ui.view,arch_db:exp_budget_check.crossovered_budget_view_form_inherit
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.crossovered_budget_view_form_inherit
|
||||||
msgid "Confirm Amount"
|
msgid "Confirm Amount"
|
||||||
msgstr "المبلغ المصدق"
|
msgstr "المبلغ التعميد"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
|
@ -79,6 +81,7 @@ msgstr "تأكيد الفاتورة"
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__display_name
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__display_name
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__display_name
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__display_name
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__display_name
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__display_name
|
||||||
msgid "Display Name"
|
msgid "Display Name"
|
||||||
msgstr "الاسم المعروض"
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
|
@ -94,12 +97,33 @@ msgstr "مسودة"
|
||||||
msgid "Exceed Budget"
|
msgid "Exceed Budget"
|
||||||
msgstr "تخطي الموازنة"
|
msgstr "تخطي الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_hr_expense
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__expense_id
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__budget_confirmation__type__expense
|
||||||
|
msgid "Expense"
|
||||||
|
msgstr "المصروف"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Expense :%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__hide_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__hide_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__hide_budget
|
||||||
|
msgid "Hide Budget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__id
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__id
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__id
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__id
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__id
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__id
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__id
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__id
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__id
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__id
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "المُعرف"
|
msgstr "المُعرف"
|
||||||
|
|
||||||
|
|
@ -112,6 +136,7 @@ msgstr ""
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_approve
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_approve
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_approve
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_approve
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_approve
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_approve
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_approve
|
||||||
msgid "Is Approve"
|
msgid "Is Approve"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -126,18 +151,14 @@ msgstr ""
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_check
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_check
|
||||||
msgid "Is Check"
|
msgid "Is Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: exp_budget_check
|
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_reject
|
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_reject
|
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_reject
|
|
||||||
msgid "Is Reject"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__is_analytic_budget
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__is_analytic_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_grant_project__is_analytic_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_budget
|
||||||
msgid "Is Use In Budget"
|
msgid "Is Use In Budget"
|
||||||
msgstr "يستخدم في الموازنة"
|
msgstr "يستخدم في الموازنة"
|
||||||
|
|
||||||
|
|
@ -157,9 +178,22 @@ msgstr "عنصر اليومية"
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line____last_update
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line____last_update
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation____last_update
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation____last_update
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines____last_update
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense____last_update
|
||||||
msgid "Last Modified on"
|
msgid "Last Modified on"
|
||||||
msgstr "آخر تعديل في"
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New Expense Report"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please Check Budget First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
|
|
@ -169,8 +203,8 @@ msgstr "الرجاء إختيار حسابات تحليلية لهذه الفا
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Please Set An Expense Account For Product %s"
|
msgid "Please insert Bill Date"
|
||||||
msgstr "الرجاء إختيار حساب للمنتج%s"
|
msgstr "الرجاء إدخال تاريخ الفاتورة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__posted
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__posted
|
||||||
|
|
@ -178,11 +212,11 @@ msgid "Posted"
|
||||||
msgstr "مُرحل"
|
msgstr "مُرحل"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__reject
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__reject
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__reject
|
#, python-format
|
||||||
msgid "Reject"
|
msgid "Rejected By : %s With Reject Reason : %s"
|
||||||
msgstr "رفض"
|
msgstr "تم الرقض بواسطة %s . مع سبب الرقض : %s"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__reserve
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__reserve
|
||||||
|
|
@ -202,19 +236,39 @@ msgstr "المبلغ المحجوز"
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_a
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_a
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_b
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_b
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_bill
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_bill
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__state
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "الحالة"
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_hr_expense__state
|
||||||
|
msgid "Status of the expense."
|
||||||
|
msgstr "حالة المصروف."
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__price_tax
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__price_tax
|
||||||
msgid "Tax"
|
msgid "Tax"
|
||||||
msgstr "ضريبة"
|
msgstr "ضريبة"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The Budget Has Been Rejected"
|
msgid "The Budget Confirmation Doesn't Approve yet"
|
||||||
msgstr "تم رفض الموازنة لهذه الفاتورة"
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_crossovered_budget_lines__confirm
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of confirmed purchase orders"
|
||||||
|
msgstr "المبلغ التعميد : هو عبارة قيمة التعميد ( أوامر الشراء)"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_crossovered_budget_lines__reserve
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of reserved purchase orders"
|
||||||
|
msgstr "المبلغ المحجوز وهو عبارة عن طلبات عروض الأسعار تم الموافقة عليها من الموازنة ( ارتباط مبدئى)"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__budget_confirmation__type__vendor_bill
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__budget_confirmation__type__vendor_bill
|
||||||
|
|
@ -228,39 +282,18 @@ msgid "Vendor Bill :%s"
|
||||||
msgstr "فاتورة المورد :%s"
|
msgstr "فاتورة المورد :%s"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
|
||||||
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__wait_budget
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__wait_budget
|
||||||
#, python-format
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__wait_budget
|
||||||
msgid "Wait Budget"
|
msgid "Wait Budget"
|
||||||
msgstr "إنتظار تحقق الموازنة"
|
msgstr "إنتظار تحقق الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "analytic account is %s not link with budget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: exp_budget_check
|
#. module: exp_budget_check
|
||||||
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__type
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__type
|
||||||
msgid "type"
|
msgid "type"
|
||||||
msgstr "النوع"
|
msgstr "النوع"
|
||||||
|
|
||||||
#. module: exp_budget_check
|
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "analytic account is %s not link with budget"
|
|
||||||
msgstr "الحساب التحليلي %s ليس له موازنة"
|
|
||||||
|
|
||||||
#. module: exp_budget_check
|
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Rejected By : %s With Reject Reason : %s"
|
|
||||||
msgstr "تم الرقض بواسطة %s . مع سبب الرقض : %s"
|
|
||||||
|
|
||||||
|
|
||||||
#. module: exp_budget_check
|
|
||||||
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Please insert Bill Date"
|
|
||||||
msgstr "الرجاء إدخال تاريخ الفاتورة"
|
|
||||||
|
|
||||||
#. module: account_budget_custom
|
|
||||||
#: code:addons/account_budget_custom/models/budget_confirmation.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Specify Reject Reason"
|
|
||||||
msgstr "تحديد سبب الرفض"
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,299 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * exp_budget_check
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-06-26 18:16+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-06-26 18:16+0000\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_account_analytic_account
|
||||||
|
msgid "Analytic Account"
|
||||||
|
msgstr "الحساب التحليلي"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__budget_approve
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__budget_approve
|
||||||
|
msgid "Approved"
|
||||||
|
msgstr "موافقة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__is_auto_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_grant_project__is_auto_check
|
||||||
|
msgid "Auto Check"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_budget_confirmation
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
msgid "Budget Confirmation"
|
||||||
|
msgstr "تعميد الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_crossovered_budget_lines
|
||||||
|
msgid "Budget Line"
|
||||||
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__cancel
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "ملغي"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__budget_check
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.hr_expense_view_form_inherit
|
||||||
|
msgid "Check Budget"
|
||||||
|
msgstr "فحص الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__confirm
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__confirm
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
msgid "Confirm"
|
||||||
|
msgstr "تأكيد"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__confirm
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.crossovered_budget_view_form_inherit
|
||||||
|
msgid "Confirm Amount"
|
||||||
|
msgstr "المبلغ التعميد"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.budget_check_view_move_form
|
||||||
|
msgid "Confirm Bill"
|
||||||
|
msgstr "تأكيد الفاتورة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__display_name
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__draft
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "مسودة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__exceed_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__exceed_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__exceed_budget
|
||||||
|
msgid "Exceed Budget"
|
||||||
|
msgstr "تخطي الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_hr_expense
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__expense_id
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__budget_confirmation__type__expense
|
||||||
|
msgid "Expense"
|
||||||
|
msgstr "المصروف"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Expense :%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__hide_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__hide_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__hide_budget
|
||||||
|
msgid "Hide Budget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__id
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__id
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "المُعرف"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__invoice_id
|
||||||
|
msgid "Invoice"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_approve
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_approve
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_approve
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_approve
|
||||||
|
msgid "Is Approve"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_budget
|
||||||
|
msgid "Is Budget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__is_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__is_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__is_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_check
|
||||||
|
msgid "Is Check"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account__is_analytic_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_grant_project__is_analytic_budget
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__is_budget
|
||||||
|
msgid "Is Use In Budget"
|
||||||
|
msgstr "يستخدم في الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "قيد اليومية"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model,name:exp_budget_check.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "عنصر اليومية"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_analytic_account____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines____last_update
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense____last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New Expense Report"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please Check Budget First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please Choose Analytic account for This Bill"
|
||||||
|
msgstr "الرجاء إختيار حسابات تحليلية لهذه الفاتورة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please insert Bill Date"
|
||||||
|
msgstr "الرجاء إدخال تاريخ الفاتورة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__posted
|
||||||
|
msgid "Posted"
|
||||||
|
msgstr "مُرحل"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Rejected By : %s With Reject Reason : %s"
|
||||||
|
msgstr "تم الرقض بواسطة %s . مع سبب الرقض : %s"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_crossovered_budget_lines__reserve
|
||||||
|
#: model_terms:ir.ui.view,arch_db:exp_budget_check.crossovered_budget_view_form_inherit
|
||||||
|
msgid "Reserve Amount"
|
||||||
|
msgstr "المبلغ المحجوز"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__state_a
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__state_b
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_bank_statement_line__state_bill
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__state
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__state_a
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__state_b
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move__state_bill
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_a
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_b
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_payment__state_bill
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_hr_expense__state
|
||||||
|
msgid "Status"
|
||||||
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_hr_expense__state
|
||||||
|
msgid "Status of the expense."
|
||||||
|
msgstr "حالة المصروف."
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_account_move_line__price_tax
|
||||||
|
msgid "Tax"
|
||||||
|
msgstr "ضريبة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The Budget Confirmation Doesn't Approve yet"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_crossovered_budget_lines__confirm
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of confirmed purchase orders"
|
||||||
|
msgstr "المبلغ التعميد : هو عبارة قيمة التعميد ( أوامر الشراء)"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:exp_budget_check.field_crossovered_budget_lines__reserve
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of reserved purchase orders"
|
||||||
|
msgstr "المبلغ المحجوز وهو عبارة عن طلبات عروض الأسعار تم الموافقة عليها من الموازنة ( ارتباط مبدئى)"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__budget_confirmation__type__vendor_bill
|
||||||
|
msgid "Vendor Bill"
|
||||||
|
msgstr "فاتورة مورد"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/account_invoice.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Vendor Bill :%s"
|
||||||
|
msgstr "فاتورة المورد :%s"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__account_move__state__wait_budget
|
||||||
|
#: model:ir.model.fields.selection,name:exp_budget_check.selection__hr_expense__state__wait_budget
|
||||||
|
msgid "Wait Budget"
|
||||||
|
msgstr "إنتظار تحقق الموازنة"
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: code:addons/exp_budget_check/models/hr_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "analytic account is %s not link with budget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: exp_budget_check
|
||||||
|
#: model:ir.model.fields,field_description:exp_budget_check.field_budget_confirmation__type
|
||||||
|
msgid "type"
|
||||||
|
msgstr "النوع"
|
||||||
|
|
@ -4,8 +4,30 @@ from odoo import api, fields, models, _
|
||||||
class CrossoveredBudgetLines(models.Model):
|
class CrossoveredBudgetLines(models.Model):
|
||||||
_inherit = "crossovered.budget.lines"
|
_inherit = "crossovered.budget.lines"
|
||||||
|
|
||||||
reserve = fields.Float(string='Reserve Amount')
|
reserve = fields.Float(string='Reserve Amount', compute='_compute_reserve',
|
||||||
confirm = fields.Float(string='Confirm Amount')
|
help=_('Total amount of reserved purchase orders'))
|
||||||
|
confirm = fields.Float(string='Confirm Amount', compute='_compute_confirm',
|
||||||
|
help=_('Total amount of confirmed purchase orders'))
|
||||||
|
|
||||||
|
@api.depends('analytic_account_id')
|
||||||
|
def _compute_confirm(self):
|
||||||
|
for rec in self:
|
||||||
|
orders = self.env['purchase.order.line'].search(
|
||||||
|
[('account_analytic_id', '=', rec.analytic_account_id.id),
|
||||||
|
('order_id.state', 'in', ['purchase'])]).mapped('order_id')
|
||||||
|
total_orders = sum(orders.mapped('amount_total'))
|
||||||
|
invoiced = self.env['account.move'].search(
|
||||||
|
[('purchase_id', 'in', orders.ids), ('state', 'not in', ['draft', 'cancel'])]).mapped('amount_total')
|
||||||
|
rec.confirm = (total_orders - sum(invoiced)) * -1
|
||||||
|
|
||||||
|
@api.depends('analytic_account_id')
|
||||||
|
def _compute_reserve(self):
|
||||||
|
for rec in self:
|
||||||
|
orders = self.env['purchase.order.line'].search(
|
||||||
|
[('account_analytic_id', '=', rec.analytic_account_id.id),
|
||||||
|
('order_id.state', 'in', ['draft', 'sent', 'to approve'])]).mapped('order_id')
|
||||||
|
total_orders = sum(orders.mapped('amount_total'))
|
||||||
|
rec.reserve = total_orders * -1
|
||||||
|
|
||||||
def _compute_operations_amount(self):
|
def _compute_operations_amount(self):
|
||||||
if not self.ids: return
|
if not self.ids: return
|
||||||
|
|
@ -58,7 +80,3 @@ class CrossoveredBudgetLines(models.Model):
|
||||||
line.pull_out = abs(pull_out)
|
line.pull_out = abs(pull_out)
|
||||||
line.provide = abs(provide)
|
line.provide = abs(provide)
|
||||||
line.budget_confirm_amount = budget_confirm_amount
|
line.budget_confirm_amount = budget_confirm_amount
|
||||||
line.remain = abs(line.planned_amount) + provide - abs(pull_out) - abs(line.practical_amount) - abs(
|
|
||||||
line.reserved_amount) + line.reserve
|
|
||||||
if line.planned_amount < 0:
|
|
||||||
line.remain = -line.remain
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ class BudgetConfirmationCustom(models.Model):
|
||||||
if self.invoice_id and self.type == 'vendor.bill':
|
if self.invoice_id and self.type == 'vendor.bill':
|
||||||
self.invoice_id.write({'state': 'draft'})
|
self.invoice_id.write({'state': 'draft'})
|
||||||
self.invoice_id.message_post(body=_(
|
self.invoice_id.message_post(body=_(
|
||||||
"Rejected By : %s With Reject Reason : %s" % (str(self.env.user.name), str(self.reject_reason))))
|
"Rejected By : %s With Reject Reason : %s" % (str(self.env.user.name), str(self.reject_reason or self.env.context.get('reject_reason','')))))
|
||||||
|
|
||||||
def done(self):
|
def done(self):
|
||||||
super(BudgetConfirmationCustom, self).done()
|
super(BudgetConfirmationCustom, self).done()
|
||||||
|
|
@ -30,6 +30,8 @@ class BudgetConfirmationCustom(models.Model):
|
||||||
lambda x: x.general_budget_id in budget_post and
|
lambda x: x.general_budget_id in budget_post and
|
||||||
x.crossovered_budget_id.state == 'done' and
|
x.crossovered_budget_id.state == 'done' and
|
||||||
x.date_from <= self.date <= x.date_to)
|
x.date_from <= self.date <= x.date_to)
|
||||||
|
if len(budget_lines) > 1:
|
||||||
|
budget_lines = budget_lines[0]
|
||||||
print("budget_lines.reserve budget_lines.reserve budget_lines.reserve", budget_lines.reserve)
|
print("budget_lines.reserve budget_lines.reserve budget_lines.reserve", budget_lines.reserve)
|
||||||
amount = budget_lines.reserve
|
amount = budget_lines.reserve
|
||||||
amount += line.amount
|
amount += line.amount
|
||||||
|
|
@ -51,13 +53,13 @@ class AccountMove(models.Model):
|
||||||
state_a = fields.Selection(related='state')
|
state_a = fields.Selection(related='state')
|
||||||
state_b = fields.Selection(related='state')
|
state_b = fields.Selection(related='state')
|
||||||
|
|
||||||
is_budget = fields.Boolean(default=True)
|
is_budget = fields.Boolean(defaul=True)
|
||||||
state_bill = fields.Selection(related='state')
|
state_bill = fields.Selection(related='state')
|
||||||
budget_check = fields.Boolean(string="Check Budget", default=False, readonly=True)
|
budget_check = fields.Boolean(string="Check Budget", default=False, readonly=True)
|
||||||
exceed_budget = fields.Boolean(default=False)
|
exceed_budget = fields.Boolean(defaul=False)
|
||||||
is_check = fields.Boolean(default=False)
|
is_check = fields.Boolean(defaul=False)
|
||||||
is_approve = fields.Boolean(default=False)
|
is_approve = fields.Boolean(defaul=False)
|
||||||
|
hide_budget = fields.Boolean(defaul=False,copy=False)
|
||||||
def copy(self):
|
def copy(self):
|
||||||
self.write({'budget_check': False})
|
self.write({'budget_check': False})
|
||||||
# self.write({'is_check':False})
|
# self.write({'is_check':False})
|
||||||
|
|
@ -76,6 +78,22 @@ class AccountMove(models.Model):
|
||||||
self.write({
|
self.write({
|
||||||
'state': 'budget_approve'
|
'state': 'budget_approve'
|
||||||
})
|
})
|
||||||
|
other_confirms = self.env['budget.confirmation'].search(
|
||||||
|
[('invoice_id', '=', self.id), ('state', '=', 'cancel')], limit=1,
|
||||||
|
order='id desc')
|
||||||
|
if other_confirms:
|
||||||
|
other_confirms.state='draft'
|
||||||
|
return
|
||||||
|
if self.purchase_id:
|
||||||
|
confirm_budget = self.env['budget.confirmation'].search([('po_id', '=', self.purchase_id.id)], limit=1,
|
||||||
|
order='id desc')
|
||||||
|
if confirm_budget:
|
||||||
|
confirm_budget.invoice_id = self.id
|
||||||
|
self.write({
|
||||||
|
'is_check': True,
|
||||||
|
'state': 'budget_approve' if confirm_budget.state == 'done' else 'wait_budget'
|
||||||
|
})
|
||||||
|
return True
|
||||||
|
|
||||||
def button_cancel(self):
|
def button_cancel(self):
|
||||||
res = super(AccountMove, self).button_cancel()
|
res = super(AccountMove, self).button_cancel()
|
||||||
|
|
@ -133,20 +151,38 @@ class AccountMove(models.Model):
|
||||||
|
|
||||||
def action_budget(self):
|
def action_budget(self):
|
||||||
confirmation_lines = []
|
confirmation_lines = []
|
||||||
|
self.hide_budget = True
|
||||||
if not self.budget_check:
|
if not self.budget_check:
|
||||||
|
other_confirms = self.env['budget.confirmation'].search(
|
||||||
|
[('invoice_id', '=', self.id), ('state', '!=', 'cancel')], limit=1,
|
||||||
|
order='id desc')
|
||||||
|
if other_confirms:
|
||||||
|
return
|
||||||
amount = 0
|
amount = 0
|
||||||
|
if self.purchase_id:
|
||||||
|
confirm_budget = self.env['budget.confirmation'].search([('po_id', '=', self.purchase_id.id)], limit=1,
|
||||||
|
order='id desc')
|
||||||
|
if confirm_budget:
|
||||||
|
confirm_budget.invoice_id = self.id
|
||||||
|
self.write({
|
||||||
|
'is_check': True,
|
||||||
|
'state': 'budget_approve' if confirm_budget.state == 'done' else 'wait_budget'
|
||||||
|
})
|
||||||
|
if confirm_budget.state =='cancel':
|
||||||
|
confirm_budget.state='draft'
|
||||||
|
return True
|
||||||
for line in self.invoice_line_ids.filtered(lambda r: r.analytic_account_id.is_analytic_budget == True):
|
for line in self.invoice_line_ids.filtered(lambda r: r.analytic_account_id.is_analytic_budget == True):
|
||||||
if line.analytic_account_id:
|
if line.analytic_account_id:
|
||||||
if not line.analytic_account_id:
|
if not line.analytic_account_id:
|
||||||
raise ValidationError(_('Please Choose Analytic account for This Bill'))
|
raise ValidationError(_('Please Choose Analytic account for This Bill'))
|
||||||
budget_lines = line.analytic_account_id.crossovered_budget_line.filtered(
|
budget_lines = self.env['crossovered.budget.lines'].search(
|
||||||
lambda x:
|
[('analytic_account_id', '=', line.analytic_account_id.id),
|
||||||
x.crossovered_budget_id.state == 'done' and
|
('general_budget_id.account_ids', 'in', [line.account_id.id]),
|
||||||
fields.Date.from_string(x.date_from) <= fields.Date.from_string(
|
('crossovered_budget_id.state', '=', 'done'),
|
||||||
self.invoice_date) <= fields.Date.from_string(x.date_to))
|
('crossovered_budget_id.date_from', '<=', self.invoice_date),
|
||||||
|
('crossovered_budget_id.date_to', '>=', self.invoice_date)])
|
||||||
if not budget_lines:
|
if not budget_lines:
|
||||||
raise UserError(
|
confirmation_lines=[]
|
||||||
_('analytic account is %s not link with budget') % line.analytic_account_id.name)
|
|
||||||
else:
|
else:
|
||||||
remain = abs(budget_lines[0].remain)
|
remain = abs(budget_lines[0].remain)
|
||||||
amount = amount + (line.price_subtotal + line.price_tax)
|
amount = amount + (line.price_subtotal + line.price_tax)
|
||||||
|
|
@ -174,23 +210,25 @@ class AccountMove(models.Model):
|
||||||
'invoice_id': self.id
|
'invoice_id': self.id
|
||||||
}
|
}
|
||||||
self.env['budget.confirmation'].create(data)
|
self.env['budget.confirmation'].create(data)
|
||||||
|
|
||||||
self.write({
|
|
||||||
'is_check': True
|
|
||||||
})
|
|
||||||
self.write({
|
self.write({
|
||||||
'state': 'wait_budget'
|
'state': 'wait_budget'
|
||||||
})
|
})
|
||||||
|
def open_confirmation(self):
|
||||||
def action_open_budget_confirmation(self):
|
formview_ref = self.env.ref('account_budget_custom.view_budget_confirmation_form', False)
|
||||||
self.ensure_one()
|
treeview_ref = self.env.ref('account_budget_custom.view_budget_confirmation_tree', False)
|
||||||
|
confirm_budget = self.env['budget.confirmation'].search([('invoice_id', '=', self.id)])
|
||||||
return {
|
return {
|
||||||
"name": _('Budget Confirmation'),
|
'name': ("Budget Confirmation"),
|
||||||
"type": "ir.actions.act_window",
|
'view_mode': 'tree, form',
|
||||||
"res_model": "budget.confirmation",
|
'view_id': False,
|
||||||
"view_mode": "form",
|
'view_type': 'form',
|
||||||
"target": "new",
|
'res_model': 'budget.confirmation',
|
||||||
"domain": [('invoice_id', '=', self.id)]
|
'type': 'ir.actions.act_window',
|
||||||
|
'target': 'current',
|
||||||
|
'domain': "[('id', 'in', %s)]" % confirm_budget.ids,
|
||||||
|
'views': [(treeview_ref and treeview_ref.id or False, 'tree'),
|
||||||
|
(formview_ref and formview_ref.id or False, 'form')],
|
||||||
|
'context': {'create': False}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@ class AccountMove(models.Model):
|
||||||
])
|
])
|
||||||
|
|
||||||
is_budget = fields.Boolean(related='analytic_account_id.is_analytic_budget')
|
is_budget = fields.Boolean(related='analytic_account_id.is_analytic_budget')
|
||||||
is_check = fields.Boolean(default=False, copy=False)
|
is_check = fields.Boolean(defaul=False, copy=False)
|
||||||
is_approve = fields.Boolean(default=False, copy=False)
|
is_approve = fields.Boolean(defaul=False, copy=False)
|
||||||
|
|
||||||
def action_submit_expenses(self):
|
def action_submit_expenses(self):
|
||||||
if self.analytic_account_id.is_analytic_budget:
|
if self.analytic_account_id.is_analytic_budget:
|
||||||
|
|
|
||||||
|
|
@ -27,25 +27,12 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<field name="final_amount" position="after">
|
<field name="final_amount" position="after">
|
||||||
<field name="confirm" readonly="1" sum="Confirm Amount" widget="monetary"/>
|
<field name="reserve" readonly="1" sum="Reserve Amount" widget="monetary" optional="show"/>
|
||||||
|
<field name="confirm" readonly="1" sum="Confirm Amount" widget="monetary" optional="show"/>
|
||||||
</field>
|
</field>
|
||||||
<!-- <field name="budget_confirm_amount" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</field> -->
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- <record id="check_budget_purchase_view_form" model="ir.ui.view">-->
|
|
||||||
<!-- <field name="name">check.budget.purchase.form</field>-->
|
|
||||||
<!-- <field name="model">purchase.order</field>-->
|
|
||||||
<!-- <field name="inherit_id" ref="purchase.purchase_order_form"/>-->
|
|
||||||
<!-- <field name="arch" type="xml">-->
|
|
||||||
<!-- <xpath expr="//field[@name='amount_tax']" position="after">-->
|
|
||||||
<!-- <field name="budget_check" invisible="1"/>-->
|
|
||||||
<!-- </xpath>-->
|
|
||||||
<!-- </field>-->
|
|
||||||
<!-- </record>-->
|
|
||||||
|
|
||||||
|
|
||||||
<record id="budget_check_view_move_form" model="ir.ui.view">
|
<record id="budget_check_view_move_form" model="ir.ui.view">
|
||||||
<field name="name">budget.account.view.move.inherit.form</field>
|
<field name="name">budget.account.view.move.inherit.form</field>
|
||||||
|
|
@ -62,15 +49,20 @@
|
||||||
|
|
||||||
|
|
||||||
<xpath expr="//button[@name='action_post']" position="before">
|
<xpath expr="//button[@name='action_post']" position="before">
|
||||||
|
<field name="hide_budget" invisible="1"/>
|
||||||
<button name="action_confirm" type="object" string="Confirm Bill" class="oe_highlight"
|
<button name="action_confirm" type="object" string="Confirm Bill" class="oe_highlight"
|
||||||
attrs="{'invisible': ['|', ('state', '!=', 'draft'),('move_type', '!=', 'in_invoice')]}"/>
|
attrs="{'invisible': ['|', ('state', '!=', 'draft'),('move_type', '!=', 'in_invoice')]}"/>
|
||||||
<button name="action_budget" type="object" string="Check Budget" class="oe_highlight"
|
<button name="action_budget" type="object" string="Check Budget" class="oe_highlight"
|
||||||
attrs="{'invisible': ['|', ('state', '!=', 'confirm'),('move_type', '!=', 'in_invoice')]}"/>
|
attrs="{'invisible': ['|','|',('move_type', '!=', 'in_invoice'), ('state', '!=', 'confirm'),('hide_budget','=',True)]}"/>
|
||||||
<button name="action_post" string="Confirm" class="oe_highlight"
|
<button name="action_post" string="Confirm" class="oe_highlight"
|
||||||
type="object" groups="account.group_account_invoice"
|
type="object" groups="account.group_account_invoice"
|
||||||
attrs="{'invisible': ['|', '|', ('state', '!=', 'budget_approve'), ('auto_post', '=', True), ('move_type', '=', 'entry')]}"/>
|
attrs="{'invisible': ['|', '|', ('state', '!=', 'budget_approve'), ('auto_post', '=', True), ('move_type', '=', 'entry')]}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
|
||||||
|
<button class="oe_stat_button" name="open_confirmation" type="object" string="Budget Confirmation"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
<button name="button_cancel" position="attributes">
|
<button name="button_cancel" position="attributes">
|
||||||
<attribute name="attrs">{'invisible' : ['|', ('id', '=', False), ('state', 'not in',
|
<attribute name="attrs">{'invisible' : ['|', ('id', '=', False), ('state', 'not in',
|
||||||
('draft','confirm','budget_approve'))]}
|
('draft','confirm','budget_approve'))]}
|
||||||
|
|
@ -93,13 +85,6 @@
|
||||||
<field name="is_approve" invisible="1"/>
|
<field name="is_approve" invisible="1"/>
|
||||||
<field name="is_check" invisible="1"/>
|
<field name="is_check" invisible="1"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
|
|
||||||
<button class="oe_stat_button" name="action_open_budget_confirmation" type="object" string="Budget Confirmation"
|
|
||||||
icon="fa-list-ol" attrs="{'invisible':[('state','not in',('wait_budget','budget_approve'))]}" />
|
|
||||||
</xpath>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,54 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="view_budget_confirmation_form" model="ir.ui.view">
|
||||||
|
<field name="name">expert.budget.confirmation.tree</field>
|
||||||
|
<field name="model">budget.confirmation</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.view_budget_confirmation_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="ref" position="after">
|
||||||
|
<field name="expense_id" attrs="{'invisible': [('expense_id', '=', False)]}" optional="show"/>
|
||||||
|
<field name="invoice_id" attrs="{'invisible': [('invoice_id', '=', False)]}" optional="show"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_crossovered_budget_line_tree" model="ir.ui.view">
|
||||||
|
<field name="name">crossovered.budget.lines.tree</field>
|
||||||
|
<field name="model">crossovered.budget.lines</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.view_crossovered_budget_line_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="final_amount" position="after">
|
||||||
|
<field name="reserve" optional="show"/>
|
||||||
|
<field name="confirm" optional="show"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_crossovered_budget_line_pivot" model="ir.ui.view">
|
||||||
|
<field name="name">crossovered.budget.lines.tree</field>
|
||||||
|
<field name="model">crossovered.budget.lines</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.view_crossovered_budget_line_pivot"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="final_amount" position="after">
|
||||||
|
<field name="reserve" optional="show"/>
|
||||||
|
<field name="confirm" optional="show"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_crossovered_budget_line_graph" model="ir.ui.view">
|
||||||
|
<field name="name">crossovered.budget.lines.tree</field>
|
||||||
|
<field name="model">crossovered.budget.lines</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.view_crossovered_budget_line_graph"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="final_amount" position="after">
|
||||||
|
<field name="reserve" optional="show"/>
|
||||||
|
<field name="confirm" optional="show"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
{
|
||||||
|
'name': "Initial engagement budget",
|
||||||
|
'description': """
|
||||||
|
Add new features to budget :
|
||||||
|
- Initial engagement budget workflow.
|
||||||
|
- Budget Confirmation.
|
||||||
|
""",
|
||||||
|
'author': "Expert Co. Ltd.",
|
||||||
|
'website': "http://www.exp-sa.com",
|
||||||
|
'category': 'Odex25 Accounting/Accounting',
|
||||||
|
# any module necessary for this one to work correctly
|
||||||
|
'depends': ['account_budget_custom','purchase_requisition_custom','exp_budget_check'],
|
||||||
|
# always loaded
|
||||||
|
'data': [
|
||||||
|
'views/account_budget_views.xml',
|
||||||
|
'views/purchase_request_view.xml',
|
||||||
|
'views/res_config_view.xml',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,224 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * initial_engagement_budget
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-07-17 00:08+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-07-17 00:08+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: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_company__activate_initial_engagement
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_config_settings__activate_initial_engagement
|
||||||
|
msgid "Activate Initial Engagement"
|
||||||
|
msgstr "تفعيل الربط المبدئي بالموازنات"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:initial_engagement_budget.purchase_requisition_custom_setting
|
||||||
|
msgid "Activate Initial Engagement Budget"
|
||||||
|
msgstr "تفعيل الربط المبدئي بالموازنات"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been exceeded"
|
||||||
|
msgstr "تم تجاوز المبلغ المالي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Amount of money that has been remained"
|
||||||
|
msgstr "تم البقاء على المبلغ المالي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line__analytic_account_id
|
||||||
|
msgid "Analytic Account"
|
||||||
|
msgstr "حساب تحليلي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model,name:initial_engagement_budget.model_crossovered_budget_lines
|
||||||
|
msgid "Budget Line"
|
||||||
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__cancel
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "إلغاء"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model,name:initial_engagement_budget.model_res_company
|
||||||
|
msgid "Companies"
|
||||||
|
msgstr "شركات"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model,name:initial_engagement_budget.model_res_config_settings
|
||||||
|
msgid "Config Settings"
|
||||||
|
msgstr "ضبط الاعدادات"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__purchase_cost__default
|
||||||
|
msgid "Default Cost Center"
|
||||||
|
msgstr "حساب تحليلي مرتبط بالشركة"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__purchase_cost__department
|
||||||
|
msgid "Department"
|
||||||
|
msgstr "الإدارة"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__direct_manager
|
||||||
|
msgid "Direct Manager"
|
||||||
|
msgstr "المدير المباشر"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_crossovered_budget_lines__display_name
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__display_name
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line__display_name
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_company__display_name
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_config_settings__display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__done
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "تم"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__draft
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "مبدئي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line__expected_price
|
||||||
|
msgid "Expected Price"
|
||||||
|
msgstr "السعر التقديري شامل الضريبة "
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_crossovered_budget_lines__id
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__id
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line__id
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_company__id
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_config_settings__id
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "المُعرف"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__waiting
|
||||||
|
msgid "In Purchase"
|
||||||
|
msgstr "في الشراء"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_crossovered_budget_lines__initial_engagement_amount
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__initial
|
||||||
|
#: model_terms:ir.ui.view,arch_db:initial_engagement_budget.crossovered_budget_view_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:initial_engagement_budget.purchase_request_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:initial_engagement_budget.view_crossovered_budget_line_tree
|
||||||
|
msgid "Initial Engagement"
|
||||||
|
msgstr "الربط المبدئي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__initial_engagement_activate
|
||||||
|
msgid "Initial Engagement Activate"
|
||||||
|
msgstr "وضع الربط المبدئي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:initial_engagement_budget.purchase_requisition_custom_setting
|
||||||
|
msgid "Initial Engagement Budget"
|
||||||
|
msgstr "الربط المبدئي للموازنات"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_crossovered_budget_lines____last_update
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request____last_update
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line____last_update
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_company____last_update
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_res_config_settings____last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/purchase_request.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please put cost center to the product line"
|
||||||
|
msgstr "برجاء ادخال حساب تحليلي للمنتج"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__purchase_cost__product_line
|
||||||
|
msgid "Product Line"
|
||||||
|
msgstr "على مستوي سطر الشراء"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model,name:initial_engagement_budget.model_purchase_request
|
||||||
|
msgid "Purchase Request"
|
||||||
|
msgstr "طلبات الشراء"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__purchase_cost
|
||||||
|
msgid "Purchase Request Cost"
|
||||||
|
msgstr "نوع الحساب التحليلي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__refuse
|
||||||
|
msgid "Refuse"
|
||||||
|
msgstr "رفض"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.actions.act_window,name:initial_engagement_budget.action_budget_confirmation_form
|
||||||
|
#: model:ir.ui.menu,name:initial_engagement_budget.menu_budget_confirmation
|
||||||
|
msgid "Request Budget Confirmations"
|
||||||
|
msgstr "الربط المبدئي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__state
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__state_a
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request__state_b
|
||||||
|
msgid "State"
|
||||||
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/purchase_request.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "This product has no expense account"
|
||||||
|
msgstr "هذا المنتج ليس له حساب مصروف"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields,field_description:initial_engagement_budget.field_purchase_request_line__line_total
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "إجمالي"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/purchase_request.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Total Amount MUST be greater than 0 !!!"
|
||||||
|
msgstr "برجاء ادخال قيمة اكبر من 0"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:initial_engagement_budget.field_crossovered_budget_lines__initial_engagement_amount
|
||||||
|
#, python-format
|
||||||
|
msgid "Total amount of confirmed purchase requests for this budget line."
|
||||||
|
msgstr "المبلغ الإجمالي لطلبات الشراء المؤكدة لهذا البند الميزاني."
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model.fields.selection,name:initial_engagement_budget.selection__purchase_request__state__wait_for_send
|
||||||
|
msgid "Wait For Sent"
|
||||||
|
msgstr "فى انتظار الارسال"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: code:addons/initial_engagement_budget/models/purchase_request.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "You must set a Vendor this PO"
|
||||||
|
msgstr "برجاء ادخال مورد لهذا الطلب"
|
||||||
|
|
||||||
|
#. module: initial_engagement_budget
|
||||||
|
#: model:ir.model,name:initial_engagement_budget.model_purchase_request_line
|
||||||
|
msgid "purchase request line"
|
||||||
|
msgstr "بند طلب الشراء"
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import account_budget
|
||||||
|
from . import purchase_request
|
||||||
|
from . import res_config
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
|
||||||
|
|
||||||
|
class CrossoveredBudgetLines(models.Model):
|
||||||
|
_inherit = "crossovered.budget.lines"
|
||||||
|
|
||||||
|
initial_engagement_amount = fields.Float(string='Initial Engagement', compute='_compute_initial_engagement_amount',
|
||||||
|
help=_(
|
||||||
|
'Total amount of confirmed purchase requests for this budget line.'))
|
||||||
|
remain = fields.Float(string='Remain of Christening', compute='_compute_remain_new',
|
||||||
|
help=_('Amount of money that has been remained'))
|
||||||
|
above_remain = fields.Float(string='Exceed Amount', compute='_compute_remain_new',
|
||||||
|
help=_('Amount of money that has been exceeded'))
|
||||||
|
|
||||||
|
@api.depends('to_operation_ids', 'from_operation_ids')
|
||||||
|
def _compute_remain_new(self):
|
||||||
|
for line in self:
|
||||||
|
remain_value = ((abs(line.final_amount) - abs(line.reserve) - abs(line.confirm) - abs(
|
||||||
|
line.practical_amount)- abs(line.initial_engagement_amount)) * -1)
|
||||||
|
line.remain = 0 if remain_value > 0 else remain_value
|
||||||
|
line.above_remain = remain_value if remain_value > 0 else 0
|
||||||
|
|
||||||
|
@api.depends('analytic_account_id')
|
||||||
|
def _compute_initial_engagement_amount(self) -> None:
|
||||||
|
for rec in self:
|
||||||
|
rec.initial_engagement_amount = sum(
|
||||||
|
self.env['budget.confirmation.line'].search([('confirmation_id.state', '=', 'done'),
|
||||||
|
('confirmation_id.request_id.state', '!=', 'done'),
|
||||||
|
('confirmation_id.request_id.purchase_create', '!=', True),
|
||||||
|
('confirmation_id.type', '=',
|
||||||
|
'purchase.request'),
|
||||||
|
('account_id', 'in',
|
||||||
|
rec.general_budget_id.account_ids.ids),
|
||||||
|
('analytic_account_id', '=',
|
||||||
|
rec.analytic_account_id.id)]).mapped(
|
||||||
|
'amount'))
|
||||||
|
|
@ -0,0 +1,152 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
from odoo.exceptions import ValidationError, UserError
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseRequest(models.Model):
|
||||||
|
_inherit = 'purchase.request'
|
||||||
|
|
||||||
|
state = fields.Selection(
|
||||||
|
selection=[('draft', 'Draft'), ('direct_manager', 'Direct Manager'), ('wait_for_send', 'Wait For Sent'),
|
||||||
|
('initial', 'Initial Engagement'),
|
||||||
|
('waiting', 'In Purchase'), ('done', 'Done'), ('cancel', 'Cancel'), ('refuse', 'Refuse')],
|
||||||
|
default="draft",
|
||||||
|
tracking=True
|
||||||
|
)
|
||||||
|
state_a = fields.Selection(related='state')
|
||||||
|
state_b = fields.Selection(related='state')
|
||||||
|
|
||||||
|
initial_engagement_activate = fields.Boolean(compute='_check_initial_engagement_activate', store=True,
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
@api.depends('name', 'date', 'department_id', 'state')
|
||||||
|
def _check_initial_engagement_activate(self):
|
||||||
|
for rec in self:
|
||||||
|
rec.initial_engagement_activate = rec.company_id.activate_initial_engagement
|
||||||
|
|
||||||
|
def action_confirm(self) -> Optional[bool]:
|
||||||
|
if self.env.user.company_id.activate_initial_engagement:
|
||||||
|
for rec in self:
|
||||||
|
rec.state = 'wait_for_send'
|
||||||
|
return
|
||||||
|
return super(PurchaseRequest, self).action_confirm()
|
||||||
|
|
||||||
|
def initial_engagement(self) -> None:
|
||||||
|
for rec in self:
|
||||||
|
rec.action_budget_initial()
|
||||||
|
rec.state = 'initial'
|
||||||
|
|
||||||
|
def action_refuse(self):
|
||||||
|
res = super(PurchaseRequest, self).action_refuse()
|
||||||
|
for rec in self:
|
||||||
|
budget_confs = self.env['budget.confirmation'].search([('request_id', '=', rec.id)])
|
||||||
|
budget_confs.write({'state': 'cancel'})
|
||||||
|
return res
|
||||||
|
|
||||||
|
def action_budget_initial(self):
|
||||||
|
confirmation_lines = []
|
||||||
|
amount = 0
|
||||||
|
total_amount = sum(line.line_total for line in self.line_ids)
|
||||||
|
if total_amount <= 0:
|
||||||
|
raise ValidationError(_("Total Amount MUST be greater than 0 !!!"))
|
||||||
|
if self.use_analytic:
|
||||||
|
analytic_account = self.account_analytic_id
|
||||||
|
else:
|
||||||
|
analytic_account = self.department_id.analytic_account_id
|
||||||
|
|
||||||
|
for order in self:
|
||||||
|
for rec in order.line_ids:
|
||||||
|
if not (
|
||||||
|
rec.product_id.property_account_expense_id.id and rec.product_id.property_account_expense_id.id or rec.product_id.categ_id.property_account_expense_categ_id.id):
|
||||||
|
raise ValidationError(
|
||||||
|
_("This product has no expense account") + ': {}'.format(rec.product_id.name))
|
||||||
|
|
||||||
|
budget_lines = analytic_account.crossovered_budget_line.filtered(
|
||||||
|
lambda x:
|
||||||
|
x.crossovered_budget_id.state == 'done' and
|
||||||
|
rec.product_id.property_account_expense_id.id in x.general_budget_id.account_ids.ids and
|
||||||
|
fields.Date.from_string(x.date_from) <= fields.Date.from_string(self.date) and
|
||||||
|
fields.Date.from_string(x.date_to) >= fields.Date.from_string(self.date))
|
||||||
|
budget_line = budget_lines.mapped('crossovered_budget_id')
|
||||||
|
if len(budget_line) > 1:
|
||||||
|
self.budget_id = budget_line[0].id
|
||||||
|
if budget_lines:
|
||||||
|
remain = abs(budget_lines[0].remain)
|
||||||
|
amount = amount + rec.line_total
|
||||||
|
new_balance = remain - amount
|
||||||
|
confirmation_lines.append((0, 0, {
|
||||||
|
'amount': rec.line_total,
|
||||||
|
'analytic_account_id': analytic_account.id,
|
||||||
|
'description': rec.product_id.name,
|
||||||
|
'budget_line_id': budget_lines[0].id,
|
||||||
|
'remain': remain,
|
||||||
|
'new_balance': new_balance,
|
||||||
|
'account_id': rec.product_id.property_account_expense_id.id and rec.product_id.property_account_expense_id.id or rec.product_id.categ_id.property_account_expense_categ_id.id
|
||||||
|
}))
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'name': self.name,
|
||||||
|
'date': self.date,
|
||||||
|
'beneficiary_id': self.partner_id.id,
|
||||||
|
'department_id': self.department_id.id,
|
||||||
|
'type': 'purchase.request',
|
||||||
|
'ref': self.name,
|
||||||
|
'description': self.name,
|
||||||
|
'total_amount': total_amount,
|
||||||
|
'lines_ids': confirmation_lines or False,
|
||||||
|
'request_id': self.id
|
||||||
|
}
|
||||||
|
self.env['budget.confirmation'].create(data)
|
||||||
|
|
||||||
|
def create_purchase_order2(self):
|
||||||
|
if not self.partner_id:
|
||||||
|
raise UserError(_("You must set a Vendor this PO"))
|
||||||
|
if self.use_analytic:
|
||||||
|
analytic_account = self.account_analytic_id.id
|
||||||
|
else:
|
||||||
|
analytic_account = self.department_id.analytic_account_id.id
|
||||||
|
line_ids = []
|
||||||
|
for line in self.line_ids:
|
||||||
|
line_ids.append((0, 6, {
|
||||||
|
'product_id': line.product_id.id,
|
||||||
|
'product_qty': line.qty,
|
||||||
|
'name': line.description or line.product_id.name,
|
||||||
|
'department_name': self.employee_id.department_id.id,
|
||||||
|
'account_analytic_id':analytic_account,
|
||||||
|
'date_planned': datetime.today(),
|
||||||
|
'price_unit': 0,
|
||||||
|
}))
|
||||||
|
|
||||||
|
purchase_order = self.env['purchase.order'].sudo().create({
|
||||||
|
'category_ids': self.product_category_ids.ids,
|
||||||
|
'origin': self.name,
|
||||||
|
'request_id': self.id,
|
||||||
|
'partner_id': self.partner_id.id,
|
||||||
|
'department_id': self.department_id.id,
|
||||||
|
'purpose': self.purchase_purpose,
|
||||||
|
'purchase_cost': 'product_line',
|
||||||
|
'order_line': line_ids,
|
||||||
|
|
||||||
|
})
|
||||||
|
self.write({'purchase_create': True})
|
||||||
|
|
||||||
|
return {
|
||||||
|
'name': "Purchase orders from employee",
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
'res_model': 'purchase.order',
|
||||||
|
'view_mode': 'form',
|
||||||
|
'res_id': purchase_order.id}
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseRequestLine(models.Model):
|
||||||
|
_inherit = 'purchase.request.line'
|
||||||
|
expected_price = fields.Float(string='Expected Price', tracking=True, )
|
||||||
|
line_total = fields.Float(string='Total', compute='_compute_line_total', store=True)
|
||||||
|
|
||||||
|
@api.depends('qty', 'expected_price')
|
||||||
|
def _compute_line_total(self) -> None:
|
||||||
|
for line in self:
|
||||||
|
line.line_total = line.qty * line.expected_price
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResConfigSettings(models.TransientModel):
|
||||||
|
_inherit = 'res.config.settings'
|
||||||
|
|
||||||
|
activate_initial_engagement = fields.Boolean(related='company_id.activate_initial_engagement', readonly=False)
|
||||||
|
|
||||||
|
|
||||||
|
class ResCompany(models.Model):
|
||||||
|
_inherit = 'res.company'
|
||||||
|
|
||||||
|
activate_initial_engagement = fields.Boolean(string='Activate Initial Engagement', default=False)
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model="ir.ui.view" id="crossovered_budget_view_form">
|
||||||
|
<field name="name">crossovered.budget.view.inherit.form</field>
|
||||||
|
<field name="model">crossovered.budget</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.crossovered_budget_view_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='crossovered_budget_line']/tree/field[@name='final_amount']"
|
||||||
|
position="after">
|
||||||
|
<field name="initial_engagement_amount" readonly="1" sum="Initial Engagement" widget="monetary"
|
||||||
|
optional="show"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_crossovered_budget_line_tree">
|
||||||
|
<field name="name">crossovered.budget.lines.inherit.tree</field>
|
||||||
|
<field name="model">crossovered.budget.lines</field>
|
||||||
|
<field name="inherit_id" ref="account_budget_custom.view_crossovered_budget_line_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='final_amount']"
|
||||||
|
position="after">
|
||||||
|
<field name="initial_engagement_amount" readonly="1" sum="Initial Engagement" widget="monetary"
|
||||||
|
optional="show"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record id="action_budget_confirmation_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Request Budget Confirmations</field>
|
||||||
|
<field name="res_model">budget.confirmation</field>
|
||||||
|
<field name="view_ids" eval="[(5, 0, 0),
|
||||||
|
(0, 0, {'view_mode': 'tree'}),(0, 0, {'view_mode': 'kanban'}),
|
||||||
|
(0, 0, {'view_mode': 'form', 'view_id': ref('account_budget_custom.view_budget_confirmation_form')})]"/>
|
||||||
|
<field name="view_mode">tree,kanban,form</field>
|
||||||
|
<field name="domain">[('type','=','purchase.request')]</field>
|
||||||
|
</record>
|
||||||
|
<menuitem action="action_budget_confirmation_form" id="menu_budget_confirmation"
|
||||||
|
parent="account_budget_custom.main_budgets_menu" sequence="5"/>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model="ir.ui.view" id="purchase_request_form">
|
||||||
|
<field name="name">purchase.request.inherit.form</field>
|
||||||
|
<field name="model">purchase.request</field>
|
||||||
|
<field name="inherit_id" ref="purchase_requisition_custom.purchase_request_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//button[@name='action_submit']" position="after">
|
||||||
|
<button name="initial_engagement"
|
||||||
|
type="object" string="Initial Engagement" states="wait_for_send" class="oe_highlight"/>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//button[@name='action_refuse']" position="attributes">
|
||||||
|
<attribute name="states">direct_manager,wait_for_send,initial</attribute>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//field[@name='date']" position="after">
|
||||||
|
<field name="initial_engagement_activate" invisible="1"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='state']" position="replace">
|
||||||
|
<field name="state" invisible="1"/>
|
||||||
|
<field name="state_a" widget="statusbar"
|
||||||
|
statusbar_visible="draft,direct_manager,wait_for_send,initial,waiting,done"
|
||||||
|
attrs="{'invisible': [('initial_engagement_activate', '=', False)]}"/>
|
||||||
|
<field name="state_b" widget="statusbar" statusbar_visible="draft,direct_manager,waiting,done"
|
||||||
|
attrs="{'invisible': [('initial_engagement_activate', '=', True)]}"/>
|
||||||
|
</xpath>
|
||||||
|
<field name="state" widget="statusbar"/>
|
||||||
|
<xpath expr="//field[@name='line_ids']/tree" position="inside">
|
||||||
|
<field name="expected_price"
|
||||||
|
attrs="{'column_invisible': [('parent.initial_engagement_activate', '!=', True)]}"/>
|
||||||
|
<field name="line_total"
|
||||||
|
attrs="{'column_invisible': [('parent.initial_engagement_activate', '!=', True)]}"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
<!-- model.name inherit form view -->
|
||||||
|
<record id="purchase_requisition_custom_setting" model="ir.ui.view">
|
||||||
|
<field name="name">model.name.inherit.view.form</field>
|
||||||
|
<field name="model">res.config.settings</field>
|
||||||
|
<field name="inherit_id" ref="purchase_requisition_custom.purchase_requisition_custom_setting"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//div[@data-string='Purchase']" position="inside">
|
||||||
|
<h2>Initial Engagement Budget</h2>
|
||||||
|
<div class="row mt16 o_settings_container">
|
||||||
|
<div class="col-12 col-md-6 o_setting_box" title="Activate Initial Engagement Budget">
|
||||||
|
<div class="o_setting_left_pane">
|
||||||
|
<div class="mt16">
|
||||||
|
<field name="activate_initial_engagement" class="o_light_label"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="o_setting_right_pane">
|
||||||
|
<label for="activate_initial_engagement"/>
|
||||||
|
<div class="text-muted">
|
||||||
|
Initial Engagement Budget
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Budget Management',
|
'name': 'Budget Management',
|
||||||
'category': 'Odex25-Accounting/Odex25-Accounting',
|
'category': 'Odex25 Accounting/Accounting',
|
||||||
'description': """
|
'description': """
|
||||||
Use budgets to compare actual with expected revenues and costs
|
Use budgets to compare actual with expected revenues and costs
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
@ -17,4 +17,5 @@ Use budgets to compare actual with expected revenues and costs
|
||||||
'views/account_budget_views.xml',
|
'views/account_budget_views.xml',
|
||||||
'views/account_analytic_account_views.xml',
|
'views/account_analytic_account_views.xml',
|
||||||
],
|
],
|
||||||
|
'demo': ['data/account_budget_demo.xml'],
|
||||||
}
|
}
|
||||||
|
|
|
||||||
0
odex25_accounting/odex25_account_budget/data/account_budget_demo.xml
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/data/account_budget_demo.xml
Normal file → Executable file
|
|
@ -1,36 +1,19 @@
|
||||||
# Translation of Odoo Server.
|
# Translation of Odoo Server.
|
||||||
# This file contains the translation of the following modules:
|
# This file contains the translation of the following modules:
|
||||||
# * odex25_account_budget
|
# * odex25_account_budget
|
||||||
#
|
#
|
||||||
# Translators:
|
|
||||||
# Sherif Abd Ekmoniem <sherif.tsupport@gmail.com>, 2020
|
|
||||||
# Mustafa Rawi <mustafa@cubexco.com>, 2020
|
|
||||||
# Sadig Adam <sadig41@gmail.com>, 2020
|
|
||||||
# amrnegm <amrnegm.01@gmail.com>, 2020
|
|
||||||
# Martin Trigaux, 2020
|
|
||||||
# Osoul <baruni@osoul.ly>, 2020
|
|
||||||
# Osama Ahmaro <osamaahmaro@gmail.com>, 2020
|
|
||||||
# amal ahmed <amalalhashemy88@hotmail.com>, 2020
|
|
||||||
# Shaima Safar <shaima.safar@open-inside.com>, 2020
|
|
||||||
# Islam Eldeeb <islameldeb@gmail.com>, 2020
|
|
||||||
# Mostafa Hanafy <mostafa.s.hanafy@gmail.com>, 2020
|
|
||||||
# Nisrine Tagri <nta@odoo.com>, 2020
|
|
||||||
# Tasneem Sarhan <tsa@odoo.com>, 2020
|
|
||||||
# Talal Albahra <talal.albahra@outlook.com>, 2020
|
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 14.0\n"
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-11-16 13:44+0000\n"
|
"POT-Creation-Date: 2024-07-01 07:42+0000\n"
|
||||||
"PO-Revision-Date: 2020-09-07 08:17+0000\n"
|
"PO-Revision-Date: 2024-07-01 07:42+0000\n"
|
||||||
"Last-Translator: Talal Albahra <talal.albahra@outlook.com>, 2020\n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Arabic (https://www.transifex.com/odoo/teams/41243/ar/)\n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: \n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Language: ar\n"
|
"Plural-Forms: \n"
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
|
@ -51,7 +34,7 @@ msgstr "يجب أن تتضمن فترة الموازنة تاريخ بدء بن
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_kanban
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_kanban
|
||||||
msgid "<i class=\"fa fa-clock-o\" role=\"img\" aria-label=\"Period\" title=\"Period\"/>"
|
msgid "<i class=\"fa fa-clock-o\" role=\"img\" aria-label=\"Period\" title=\"Period\"/>"
|
||||||
msgstr "<i class=\"fa fa-clock-o\" role=\"img\" aria-label=\"Period\" title=\"Period\"/>"
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__account_ids
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__account_ids
|
||||||
|
|
@ -62,7 +45,7 @@ msgstr "الحسابات"
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__percentage
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__percentage
|
||||||
msgid "Achievement"
|
msgid "Achievement"
|
||||||
msgstr "الإنجاز"
|
msgstr "نسبة الصرف"
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_needaction
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_needaction
|
||||||
|
|
@ -89,16 +72,6 @@ msgstr "حالة النشاط"
|
||||||
msgid "Activity Type Icon"
|
msgid "Activity Type Icon"
|
||||||
msgstr "أيقونة نوع النشاط"
|
msgstr "أيقونة نوع النشاط"
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
|
||||||
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
|
||||||
msgid "Amount really earned/spent."
|
|
||||||
msgstr "الإيرادات/المصروفات الفعلية."
|
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
|
||||||
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__theoritical_amount
|
|
||||||
msgid "Amount you are supposed to have earned/spent at this date."
|
|
||||||
msgstr "المبلغ الذي يُفترض أن تكون ربحته/أنفقته في هذا التاريخ."
|
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__planned_amount
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__planned_amount
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
@ -111,9 +84,16 @@ msgstr ""
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model,name:odex25_account_budget.model_account_analytic_account
|
#: model:ir.model,name:odex25_account_budget.model_account_analytic_account
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_account_id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_account_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__analytic_account_id
|
||||||
msgid "Analytic Account"
|
msgid "Analytic Account"
|
||||||
msgstr "الحساب التحليلي"
|
msgstr "الحساب التحليلي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/wizard/crossovered_budget_percentage_wizard.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Analytic Accounts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_group_id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_group_id
|
||||||
msgid "Analytic Group"
|
msgid "Analytic Group"
|
||||||
|
|
@ -148,7 +128,7 @@ msgstr "بنود الموازنة"
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_lines
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_lines
|
||||||
msgid "Budget Line"
|
msgid "Budget Line"
|
||||||
msgstr "خط الموازنة"
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__crossovered_budget_line
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__crossovered_budget_line
|
||||||
|
|
@ -176,11 +156,12 @@ msgstr "حالة الموازنة"
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model,name:odex25_account_budget.model_account_budget_post
|
#: model:ir.model,name:odex25_account_budget.model_account_budget_post
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__general_budget_id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__general_budget_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__budget_post_id
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_form
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_search
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_search
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_tree
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_tree
|
||||||
msgid "Budgetary Position"
|
msgid "Budgetary Position"
|
||||||
msgstr "وضع الموازنة"
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.actions.act_window,name:odex25_account_budget.open_budget_post_form
|
#: model:ir.actions.act_window,name:odex25_account_budget.open_budget_post_form
|
||||||
|
|
@ -242,10 +223,22 @@ msgstr "تأكيد"
|
||||||
msgid "Confirmed"
|
msgid "Confirmed"
|
||||||
msgstr "مؤكد"
|
msgstr "مؤكد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.crossovered_budget_percentage_wizard_action
|
||||||
|
msgid "Copy Budgetary Positions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_uid
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_uid
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__create_uid
|
||||||
msgid "Created by"
|
msgid "Created by"
|
||||||
msgstr "أنشئ بواسطة"
|
msgstr "أنشئ بواسطة"
|
||||||
|
|
||||||
|
|
@ -253,9 +246,21 @@ msgstr "أنشئ بواسطة"
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_date
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_date
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__create_date
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "أنشئ في"
|
msgstr "أنشئ في"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_percentage_line_wizard
|
||||||
|
msgid "CrossOvered Budget Percentage Lines Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_percentage_wizard
|
||||||
|
msgid "CrossOvered Budget Percentage Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__currency_id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__currency_id
|
||||||
msgid "Currency"
|
msgid "Currency"
|
||||||
|
|
@ -266,11 +271,18 @@ msgstr "العملة"
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "التاريخ"
|
msgstr "التاريخ"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Discard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__display_name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__display_name
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__display_name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__display_name
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__display_name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__display_name
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__display_name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__display_name
|
||||||
msgid "Display Name"
|
msgid "Display Name"
|
||||||
msgstr "الاسم المعروض"
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
|
@ -291,6 +303,11 @@ msgstr "مسودة"
|
||||||
msgid "Draft Budgets"
|
msgid "Draft Budgets"
|
||||||
msgstr "موازنة مؤقتة"
|
msgstr "موازنة مؤقتة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
msgid "Duplicate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__date_to
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__date_to
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__date_to
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__date_to
|
||||||
|
|
@ -337,6 +354,8 @@ msgstr "تجميع حسب"
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__id
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__id
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__id
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "المُعرف"
|
msgstr "المُعرف"
|
||||||
|
|
||||||
|
|
@ -377,6 +396,8 @@ msgstr "متابع"
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post____last_update
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post____last_update
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget____last_update
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget____last_update
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines____last_update
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard____last_update
|
||||||
msgid "Last Modified on"
|
msgid "Last Modified on"
|
||||||
msgstr "آخر تعديل في"
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
|
@ -384,6 +405,8 @@ msgstr "آخر تعديل في"
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_uid
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_uid
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_uid
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__write_uid
|
||||||
msgid "Last Updated by"
|
msgid "Last Updated by"
|
||||||
msgstr "آخر تحديث بواسطة"
|
msgstr "آخر تحديث بواسطة"
|
||||||
|
|
||||||
|
|
@ -391,6 +414,8 @@ msgstr "آخر تحديث بواسطة"
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_date
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_date
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_date
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__write_date
|
||||||
msgid "Last Updated on"
|
msgid "Last Updated on"
|
||||||
msgstr "آخر تحديث في"
|
msgstr "آخر تحديث في"
|
||||||
|
|
||||||
|
|
@ -399,6 +424,11 @@ msgstr "آخر تحديث في"
|
||||||
msgid "Late Activities"
|
msgid "Late Activities"
|
||||||
msgstr "الأنشطة المتأخرة"
|
msgstr "الأنشطة المتأخرة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__line_ids
|
||||||
|
msgid "Lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_main_attachment_id
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_main_attachment_id
|
||||||
msgid "Main Attachment"
|
msgid "Main Attachment"
|
||||||
|
|
@ -414,6 +444,11 @@ msgstr "خطأ في تسليم الرسائل"
|
||||||
msgid "Messages"
|
msgid "Messages"
|
||||||
msgstr "الرسائل"
|
msgstr "الرسائل"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__my_activity_date_deadline
|
||||||
|
msgid "My Activity Deadline"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__name
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__name
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__name
|
||||||
|
|
@ -470,6 +505,21 @@ msgstr "عدد الرسائل الجديدة"
|
||||||
msgid "Paid Date"
|
msgid "Paid Date"
|
||||||
msgstr "تاريخ السداد"
|
msgstr "تاريخ السداد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__parent_id
|
||||||
|
msgid "Parent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__parent_path
|
||||||
|
msgid "Parent Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__percentage
|
||||||
|
msgid "Percentage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
msgid "Period"
|
msgid "Period"
|
||||||
|
|
@ -487,6 +537,11 @@ msgstr "المبلغ المخطط"
|
||||||
msgid "Planned amount"
|
msgid "Planned amount"
|
||||||
msgstr "المبلغ المخطط"
|
msgstr "المبلغ المخطط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Please Select Budgetary Positions Percentage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
|
@ -566,7 +621,13 @@ msgstr "القيمة النظرية"
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
||||||
msgid "Theoretical amount"
|
msgid "Theoretical amount"
|
||||||
msgstr ""
|
msgstr "القيمة النظرية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "This Account %s is already exist in another budget."
|
||||||
|
msgstr "هذا الحساب %s موجود بالفعل في ميزانية أخرى."
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
|
@ -583,6 +644,11 @@ msgstr "للموافقة علي الموازنة"
|
||||||
msgid "Today Activities"
|
msgid "Today Activities"
|
||||||
msgstr "نشاطات اليوم"
|
msgstr "نشاطات اليوم"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
||||||
|
msgid "Total amount of money that has been spent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_exception_decoration
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_exception_decoration
|
||||||
msgid "Type of the exception activity on record."
|
msgid "Type of the exception activity on record."
|
||||||
|
|
@ -618,6 +684,17 @@ msgstr "رسائل الموقع"
|
||||||
msgid "Website communication history"
|
msgid "Website communication history"
|
||||||
msgstr "سجل تواصل الموقع"
|
msgstr "سجل تواصل الموقع"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__wizard_id
|
||||||
|
msgid "Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "You cannot delete a budget that is used in a budget line."
|
||||||
|
msgstr "لا يمكنك حذف الميزانية المستخدمة في بند الميزانية"
|
||||||
|
|
||||||
#. module: odex25_account_budget
|
#. module: odex25_account_budget
|
||||||
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
|
|
@ -627,3 +704,15 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"يجب أن تُدرج على الأقل موقفًا موازنيًا أو حسابًا تحليلًا واحدًا في بند "
|
"يجب أن تُدرج على الأقل موقفًا موازنيًا أو حسابًا تحليلًا واحدًا في بند "
|
||||||
"الموازنة."
|
"الموازنة."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "or"
|
||||||
|
msgstr "أو"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__analytic_account_id
|
||||||
|
#, python-format
|
||||||
|
msgid "الحساب التحليلي المرتبط بالميزانية"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,718 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * odex25_account_budget
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 14.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-07-01 07:42+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-07-01 07:42+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_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\"End Date\" of the budget line should be included in the Period of the "
|
||||||
|
"budget"
|
||||||
|
msgstr "يجب أن تتضمن فترة الموازنة تاريخ انتهاء بند الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\"Start Date\" of the budget line should be included in the Period of the "
|
||||||
|
"budget"
|
||||||
|
msgstr "يجب أن تتضمن فترة الموازنة تاريخ بدء بند الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_kanban
|
||||||
|
msgid "<i class=\"fa fa-clock-o\" role=\"img\" aria-label=\"Period\" title=\"Period\"/>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__account_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_form
|
||||||
|
msgid "Accounts"
|
||||||
|
msgstr "الحسابات"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__percentage
|
||||||
|
msgid "Achievement"
|
||||||
|
msgstr "نسبة الصرف"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_needaction
|
||||||
|
msgid "Action Needed"
|
||||||
|
msgstr "إجراء مطلوب"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_ids
|
||||||
|
msgid "Activities"
|
||||||
|
msgstr "الأنشطة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_exception_decoration
|
||||||
|
msgid "Activity Exception Decoration"
|
||||||
|
msgstr "زخرفة استثناء النشاط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_state
|
||||||
|
msgid "Activity State"
|
||||||
|
msgstr "حالة النشاط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_type_icon
|
||||||
|
msgid "Activity Type Icon"
|
||||||
|
msgstr "أيقونة نوع النشاط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__planned_amount
|
||||||
|
msgid ""
|
||||||
|
"Amount you plan to earn/spend. Record a positive amount if it is a revenue "
|
||||||
|
"and a negative amount if it is a cost."
|
||||||
|
msgstr ""
|
||||||
|
"المبلغ الذي تخطط لربحه/إنفاقه. سجله كقيمة موجبة إذا كان ربحًا وسالبة إذا "
|
||||||
|
"كانت تكلفة."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_account_analytic_account
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_account_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__analytic_account_id
|
||||||
|
msgid "Analytic Account"
|
||||||
|
msgstr "الحساب التحليلي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/wizard/crossovered_budget_percentage_wizard.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Analytic Accounts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__analytic_group_id
|
||||||
|
msgid "Analytic Group"
|
||||||
|
msgstr "مجموعة تحليلية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "موافقة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_attachment_count
|
||||||
|
msgid "Attachment Count"
|
||||||
|
msgstr "عدد المرفقات"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__crossovered_budget_id
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_tree
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Budget"
|
||||||
|
msgstr "الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.act_account_analytic_account_cb_lines
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
msgid "Budget Items"
|
||||||
|
msgstr "بنود الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_lines
|
||||||
|
msgid "Budget Line"
|
||||||
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__crossovered_budget_line
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__crossovered_budget_line
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_search
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_tree
|
||||||
|
msgid "Budget Lines"
|
||||||
|
msgstr "خطوط الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__name
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Budget Name"
|
||||||
|
msgstr "اسم الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__crossovered_budget_state
|
||||||
|
msgid "Budget State"
|
||||||
|
msgstr "حالة الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_account_budget_post
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__general_budget_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__budget_post_id
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_search
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_budget_post_tree
|
||||||
|
msgid "Budgetary Position"
|
||||||
|
msgstr "بند الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.open_budget_post_form
|
||||||
|
#: model:ir.ui.menu,name:odex25_account_budget.menu_budget_post_form
|
||||||
|
msgid "Budgetary Positions"
|
||||||
|
msgstr "مراكز الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.act_crossovered_budget_view
|
||||||
|
#: model:ir.ui.menu,name:odex25_account_budget.menu_act_crossovered_budget_view
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_search
|
||||||
|
msgid "Budgets"
|
||||||
|
msgstr "الموازنات"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.act_crossovered_budget_lines_view
|
||||||
|
#: model:ir.ui.menu,name:odex25_account_budget.menu_act_crossovered_budget_lines_view
|
||||||
|
msgid "Budgets Analysis"
|
||||||
|
msgstr "تحليل الموازنات"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Cancel Budget"
|
||||||
|
msgstr "إلغاء الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields.selection,name:odex25_account_budget.selection__crossovered_budget__state__cancel
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "ملغي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.actions.act_window,help:odex25_account_budget.act_crossovered_budget_view
|
||||||
|
msgid "Click to create a new budget."
|
||||||
|
msgstr "اضغط لإنشاء موازنة جديدة."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__company_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__company_id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__company_id
|
||||||
|
msgid "Company"
|
||||||
|
msgstr "شركة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__percentage
|
||||||
|
msgid ""
|
||||||
|
"Comparison between practical and theoretical amount. This measure tells you "
|
||||||
|
"if you are below or over budget."
|
||||||
|
msgstr ""
|
||||||
|
"المقارنة بين القيمة الفعلية والنظرية. تحدد نسبة الانحراف في الإيرادات أو "
|
||||||
|
"المصروفات في الموازنة."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Confirm"
|
||||||
|
msgstr "تأكيد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields.selection,name:odex25_account_budget.selection__crossovered_budget__state__confirm
|
||||||
|
msgid "Confirmed"
|
||||||
|
msgstr "مؤكد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.actions.act_window,name:odex25_account_budget.crossovered_budget_percentage_wizard_action
|
||||||
|
msgid "Copy Budgetary Positions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__create_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__create_uid
|
||||||
|
msgid "Created by"
|
||||||
|
msgstr "أنشئ بواسطة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__create_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__create_date
|
||||||
|
msgid "Created on"
|
||||||
|
msgstr "أنشئ في"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_percentage_line_wizard
|
||||||
|
msgid "CrossOvered Budget Percentage Lines Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model,name:odex25_account_budget.model_crossovered_budget_percentage_wizard
|
||||||
|
msgid "CrossOvered Budget Percentage Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__currency_id
|
||||||
|
msgid "Currency"
|
||||||
|
msgstr "العملة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_search
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "التاريخ"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Discard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__display_name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "الاسم المعروض"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields.selection,name:odex25_account_budget.selection__crossovered_budget__state__done
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "الإعتماد النهائي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields.selection,name:odex25_account_budget.selection__crossovered_budget__state__draft
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "مسودة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Draft Budgets"
|
||||||
|
msgstr "موازنة مؤقتة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
msgid "Duplicate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__date_to
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__date_to
|
||||||
|
msgid "End Date"
|
||||||
|
msgstr "تاريخ الانتهاء"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Entries..."
|
||||||
|
msgstr "القيود..."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_follower_ids
|
||||||
|
msgid "Followers"
|
||||||
|
msgstr "المتابعون"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_channel_ids
|
||||||
|
msgid "Followers (Channels)"
|
||||||
|
msgstr "المتابعون (القنوات)"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_partner_ids
|
||||||
|
msgid "Followers (Partners)"
|
||||||
|
msgstr "المتابعون (الشركاء)"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_type_icon
|
||||||
|
msgid "Font awesome icon e.g. fa-tasks"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Future Activities"
|
||||||
|
msgstr "الأنشطة المستقبلية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_search
|
||||||
|
msgid "Group By"
|
||||||
|
msgstr "تجميع حسب"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__id
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__id
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "المُعرف"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_exception_icon
|
||||||
|
msgid "Icon"
|
||||||
|
msgstr "الأيقونة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_exception_icon
|
||||||
|
msgid "Icon to indicate an exception activity."
|
||||||
|
msgstr "الأيقونة للإشارة إلى استثناء النشاط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_needaction
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_unread
|
||||||
|
msgid "If checked, new messages require your attention."
|
||||||
|
msgstr "إذا كان محددًا، فهناك رسائل جديدة تحتاج لرؤيتها."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_has_error
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_has_sms_error
|
||||||
|
msgid "If checked, some messages have a delivery error."
|
||||||
|
msgstr "إذا كان محددًا، فقد حدث خطأ في تسليم بعض الرسائل."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__is_above_budget
|
||||||
|
msgid "Is Above Budget"
|
||||||
|
msgstr "يفوق الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_is_follower
|
||||||
|
msgid "Is Follower"
|
||||||
|
msgstr "متابع"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard____last_update
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard____last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "آخر تعديل في"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__write_uid
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__write_uid
|
||||||
|
msgid "Last Updated by"
|
||||||
|
msgstr "آخر تحديث بواسطة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__write_date
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__write_date
|
||||||
|
msgid "Last Updated on"
|
||||||
|
msgstr "آخر تحديث في"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Late Activities"
|
||||||
|
msgstr "الأنشطة المتأخرة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_wizard__line_ids
|
||||||
|
msgid "Lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_main_attachment_id
|
||||||
|
msgid "Main Attachment"
|
||||||
|
msgstr "المرفق الرئيسي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_has_error
|
||||||
|
msgid "Message Delivery error"
|
||||||
|
msgstr "خطأ في تسليم الرسائل"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_ids
|
||||||
|
msgid "Messages"
|
||||||
|
msgstr "الرسائل"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__my_activity_date_deadline
|
||||||
|
msgid "My Activity Deadline"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_budget_post__name
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__name
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "الاسم"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_date_deadline
|
||||||
|
msgid "Next Activity Deadline"
|
||||||
|
msgstr "الموعد النهائي للنشاط التالي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_summary
|
||||||
|
msgid "Next Activity Summary"
|
||||||
|
msgstr "ملخص النشاط التالي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_type_id
|
||||||
|
msgid "Next Activity Type"
|
||||||
|
msgstr "نوع النشاط التالي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_search
|
||||||
|
msgid "Not Cancelled"
|
||||||
|
msgstr "ليس ملغيًا"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_needaction_counter
|
||||||
|
msgid "Number of Actions"
|
||||||
|
msgstr "عدد الإجراءات"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_has_error_counter
|
||||||
|
msgid "Number of errors"
|
||||||
|
msgstr "عدد الاخطاء"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_needaction_counter
|
||||||
|
msgid "Number of messages which requires an action"
|
||||||
|
msgstr "عدد الرسائل التي تتطلب إجراء"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_has_error_counter
|
||||||
|
msgid "Number of messages with delivery error"
|
||||||
|
msgstr "عدد الرسائل الحادث بها خطأ في التسليم"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__message_unread_counter
|
||||||
|
msgid "Number of unread messages"
|
||||||
|
msgstr "عدد الرسائل الجديدة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__paid_date
|
||||||
|
msgid "Paid Date"
|
||||||
|
msgstr "تاريخ السداد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__parent_id
|
||||||
|
msgid "Parent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_account_analytic_account__parent_path
|
||||||
|
msgid "Parent Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__percentage
|
||||||
|
msgid "Percentage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Period"
|
||||||
|
msgstr "الفترة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__planned_amount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Planned Amount"
|
||||||
|
msgstr "المبلغ المخطط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
||||||
|
msgid "Planned amount"
|
||||||
|
msgstr "المبلغ المخطط"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "Please Select Budgetary Positions Percentage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
msgid "Practical Amount"
|
||||||
|
msgstr "المبلغ الفعلي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
||||||
|
msgid "Practical amount"
|
||||||
|
msgstr "المبلغ الفعلي"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
msgid "Reset to Draft"
|
||||||
|
msgstr "إعادة التعيين لحالة مسودة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__user_id
|
||||||
|
msgid "Responsible"
|
||||||
|
msgstr "المسئول"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__activity_user_id
|
||||||
|
msgid "Responsible User"
|
||||||
|
msgstr "المستخدم المسؤول"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_has_sms_error
|
||||||
|
msgid "SMS Delivery error"
|
||||||
|
msgstr "خطأ في تسليم الرسائل القصيرة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Show all records which has next action date is before today"
|
||||||
|
msgstr "عرض كافة السجلات المُعين لها تاريخ إجراء تالي يسبق تاريخ اليوم الجاري"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__date_from
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__date_from
|
||||||
|
msgid "Start Date"
|
||||||
|
msgstr "تاريخ البداية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__state
|
||||||
|
msgid "Status"
|
||||||
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_state
|
||||||
|
msgid ""
|
||||||
|
"Status based on activities\n"
|
||||||
|
"Overdue: Due date is already passed\n"
|
||||||
|
"Today: Activity date is today\n"
|
||||||
|
"Planned: Future activities."
|
||||||
|
msgstr ""
|
||||||
|
"الحالة على أساس الأنشطة\n"
|
||||||
|
"المتأخرة: تاريخ الاستحقاق مر\n"
|
||||||
|
"اليوم: تاريخ النشاط هو اليوم\n"
|
||||||
|
"المخطط: الأنشطة المستقبلية."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The budget must have at least one account."
|
||||||
|
msgstr "يجب أن تحتوي الموازنة على حساب واحد على الأقل."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_lines__theoritical_amount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_view_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_account_analytic_account_form_inherit_budget
|
||||||
|
msgid "Theoretical Amount"
|
||||||
|
msgstr "القيمة النظرية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_graph
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_line_pivot
|
||||||
|
msgid "Theoretical amount"
|
||||||
|
msgstr "القيمة النظرية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "This Account %s is already exist in another budget."
|
||||||
|
msgstr "هذا الحساب %s موجود بالفعل في ميزانية أخرى."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "To Approve"
|
||||||
|
msgstr "للاعتماد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "To Approve Budgets"
|
||||||
|
msgstr "للموافقة علي الموازنة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.view_crossovered_budget_search
|
||||||
|
msgid "Today Activities"
|
||||||
|
msgstr "نشاطات اليوم"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__practical_amount
|
||||||
|
msgid "Total amount of money that has been spent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__activity_exception_decoration
|
||||||
|
msgid "Type of the exception activity on record."
|
||||||
|
msgstr "نوع النشاط الاستثنائي المسجل."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_unread
|
||||||
|
msgid "Unread Messages"
|
||||||
|
msgstr "الرسائل الجديدة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__message_unread_counter
|
||||||
|
msgid "Unread Messages Counter"
|
||||||
|
msgstr "عدد الرسائل الجديدة"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.actions.act_window,help:odex25_account_budget.act_crossovered_budget_view
|
||||||
|
msgid "Use budgets to compare actual with expected revenues and costs"
|
||||||
|
msgstr "استخدم موازنات لمقارنة الربح الحقيقي مع الربح المتوقع والتكاليف"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields.selection,name:odex25_account_budget.selection__crossovered_budget__state__validate
|
||||||
|
msgid "Validated"
|
||||||
|
msgstr "تم الاعتماد"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget__website_message_ids
|
||||||
|
msgid "Website Messages"
|
||||||
|
msgstr "رسائل الموقع"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget__website_message_ids
|
||||||
|
msgid "Website communication history"
|
||||||
|
msgstr "سجل تواصل الموقع"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model:ir.model.fields,field_description:odex25_account_budget.field_crossovered_budget_percentage_line_wizard__wizard_id
|
||||||
|
msgid "Wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "You cannot delete a budget that is used in a budget line."
|
||||||
|
msgstr "لا يمكنك حذف الميزانية المستخدمة في بند الميزانية"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You have to enter at least a budgetary position or analytic account on a "
|
||||||
|
"budget line."
|
||||||
|
msgstr ""
|
||||||
|
"يجب أن تُدرج على الأقل موقفًا موازنيًا أو حسابًا تحليلًا واحدًا في بند "
|
||||||
|
"الموازنة."
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex25_account_budget.crossovered_budget_percentage_wizard_form
|
||||||
|
msgid "or"
|
||||||
|
msgstr "أو"
|
||||||
|
|
||||||
|
#. module: odex25_account_budget
|
||||||
|
#: code:addons/odex25_account_budget/models/account_budget.py:0
|
||||||
|
#: model:ir.model.fields,help:odex25_account_budget.field_crossovered_budget_lines__analytic_account_id
|
||||||
|
#, python-format
|
||||||
|
msgid "الحساب التحليلي المرتبط بالميزانية"
|
||||||
|
msgstr ""
|
||||||
0
odex25_accounting/odex25_account_budget/models/account_analytic_account.py
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/models/account_analytic_account.py
Normal file → Executable file
|
|
@ -17,7 +17,7 @@ class AccountBudgetPost(models.Model):
|
||||||
|
|
||||||
name = fields.Char('Name', required=True)
|
name = fields.Char('Name', required=True)
|
||||||
account_ids = fields.Many2many('account.account', 'account_budget_rel', 'budget_id', 'account_id', 'Accounts',
|
account_ids = fields.Many2many('account.account', 'account_budget_rel', 'budget_id', 'account_id', 'Accounts',
|
||||||
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]")
|
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]",copy=False)
|
||||||
company_id = fields.Many2one('res.company', 'Company', required=True,
|
company_id = fields.Many2one('res.company', 'Company', required=True,
|
||||||
default=lambda self: self.env.company)
|
default=lambda self: self.env.company)
|
||||||
|
|
||||||
|
|
@ -38,7 +38,19 @@ class AccountBudgetPost(models.Model):
|
||||||
account_ids = self.account_ids
|
account_ids = self.account_ids
|
||||||
if not account_ids:
|
if not account_ids:
|
||||||
raise ValidationError(_('The budget must have at least one account.'))
|
raise ValidationError(_('The budget must have at least one account.'))
|
||||||
|
def unlink(self):
|
||||||
|
# raise an error if the budget is used in a crossovered.budget.lines
|
||||||
|
for budget in self:
|
||||||
|
if self.env['crossovered.budget.lines'].search_count([('general_budget_id', '=', budget.id)]):
|
||||||
|
raise ValidationError(_('You cannot delete a budget that is used in a budget line.'))
|
||||||
|
@api.constrains('account_ids')
|
||||||
|
def check_account_only_exist_in_one_budget(self):
|
||||||
|
for budget in self.search([]):
|
||||||
|
for account in self.account_ids:
|
||||||
|
if budget.account_ids == account and budget.id != self.id:
|
||||||
|
raise ValidationError(_('This Account %s is already exist in another budget.', account.name))
|
||||||
|
|
||||||
|
# _('%s (rounding)', biggest_tax_line.name),
|
||||||
@api.model
|
@api.model
|
||||||
def create(self, vals):
|
def create(self, vals):
|
||||||
self._check_account_ids(vals)
|
self._check_account_ids(vals)
|
||||||
|
|
@ -57,8 +69,8 @@ class CrossoveredBudget(models.Model):
|
||||||
|
|
||||||
name = fields.Char('Budget Name', required=True, tracking=True)
|
name = fields.Char('Budget Name', required=True, tracking=True)
|
||||||
user_id = fields.Many2one('res.users', 'Responsible', default=lambda self: self.env.user, tracking=True)
|
user_id = fields.Many2one('res.users', 'Responsible', default=lambda self: self.env.user, tracking=True)
|
||||||
date_from = fields.Date('Start Date', required=True, tracking=True, copy=True)
|
date_from = fields.Date('Start Date', required=True, tracking=True)
|
||||||
date_to = fields.Date('End Date', required=True, tracking=True, copy=True)
|
date_to = fields.Date('End Date', required=True, tracking=True)
|
||||||
state = fields.Selection([
|
state = fields.Selection([
|
||||||
('draft', 'Draft'),
|
('draft', 'Draft'),
|
||||||
('cancel', 'Cancelled'),
|
('cancel', 'Cancelled'),
|
||||||
|
|
@ -86,10 +98,6 @@ class CrossoveredBudget(models.Model):
|
||||||
def action_budget_done(self):
|
def action_budget_done(self):
|
||||||
self.write({'state': 'done'})
|
self.write({'state': 'done'})
|
||||||
|
|
||||||
def copy(self, default=None):
|
|
||||||
default = dict(default or {}, name=_("%s (copy)") % (self.name))
|
|
||||||
return super(CrossoveredBudget, self).copy(default)
|
|
||||||
|
|
||||||
|
|
||||||
class CrossoveredBudgetLines(models.Model):
|
class CrossoveredBudgetLines(models.Model):
|
||||||
_name = "crossovered.budget.lines"
|
_name = "crossovered.budget.lines"
|
||||||
|
|
@ -98,14 +106,12 @@ class CrossoveredBudgetLines(models.Model):
|
||||||
name = fields.Char(compute='_compute_line_name')
|
name = fields.Char(compute='_compute_line_name')
|
||||||
crossovered_budget_id = fields.Many2one('crossovered.budget', 'Budget', ondelete='cascade', index=True,
|
crossovered_budget_id = fields.Many2one('crossovered.budget', 'Budget', ondelete='cascade', index=True,
|
||||||
required=True)
|
required=True)
|
||||||
analytic_account_id = fields.Many2one('account.analytic.account', 'Analytic Account')
|
analytic_account_id = fields.Many2one('account.analytic.account', 'Analytic Account',help=_("الحساب التحليلي المرتبط بالميزانية"))
|
||||||
analytic_group_id = fields.Many2one('account.analytic.group', 'Analytic Group',
|
analytic_group_id = fields.Many2one('account.analytic.group', 'Analytic Group',
|
||||||
related='analytic_account_id.group_id', readonly=True)
|
related='analytic_account_id.group_id', readonly=True)
|
||||||
general_budget_id = fields.Many2one('account.budget.post', 'Budgetary Position')
|
general_budget_id = fields.Many2one('account.budget.post', 'Budgetary Position')
|
||||||
date_from = fields.Date('Start Date', related='crossovered_budget_id.date_from', readonly=False,
|
date_from = fields.Date('Start Date', required=True ,related='crossovered_budget_id.date_from',readonly=False,store=True,default=fields.Date.today())
|
||||||
store=True)
|
date_to = fields.Date('End Date', required=True , related='crossovered_budget_id.date_to',readonly=False,store=True,default=fields.Date.today())
|
||||||
date_to = fields.Date('End Date', related='crossovered_budget_id.date_to', readonly=False,
|
|
||||||
store=True)
|
|
||||||
paid_date = fields.Date('Paid Date')
|
paid_date = fields.Date('Paid Date')
|
||||||
currency_id = fields.Many2one('res.currency', related='company_id.currency_id', readonly=True)
|
currency_id = fields.Many2one('res.currency', related='company_id.currency_id', readonly=True)
|
||||||
planned_amount = fields.Monetary(
|
planned_amount = fields.Monetary(
|
||||||
|
|
|
||||||
0
odex25_accounting/odex25_account_budget/security/account_budget_security.xml
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/security/account_budget_security.xml
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/security/ir.model.access.csv
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/security/ir.model.access.csv
Normal file → Executable file
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
0
odex25_accounting/odex25_account_budget/tests/test_account_budget.py
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/tests/test_account_budget.py
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/tests/test_theoreticalamount.py
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/tests/test_theoreticalamount.py
Normal file → Executable file
2
odex25_accounting/odex25_account_budget/views/account_analytic_account_views.xml
Normal file → Executable file
2
odex25_accounting/odex25_account_budget/views/account_analytic_account_views.xml
Normal file → Executable file
|
|
@ -25,7 +25,7 @@
|
||||||
<field name="crossovered_budget_line" widget="one2many" colspan="4" nolabel="1" mode="tree">
|
<field name="crossovered_budget_line" widget="one2many" colspan="4" nolabel="1" mode="tree">
|
||||||
<tree string="Budget Items" editable="top">
|
<tree string="Budget Items" editable="top">
|
||||||
<field name="crossovered_budget_id"/>
|
<field name="crossovered_budget_id"/>
|
||||||
<field name="general_budget_id"/>
|
<field name="general_budget_id" optional="show"/>
|
||||||
<field name="date_from"/>
|
<field name="date_from"/>
|
||||||
<field name="date_to"/>
|
<field name="date_to"/>
|
||||||
<field name="paid_date"/>
|
<field name="paid_date"/>
|
||||||
|
|
|
||||||
138
odex25_accounting/odex25_account_budget/views/account_budget_views.xml
Normal file → Executable file
138
odex25_accounting/odex25_account_budget/views/account_budget_views.xml
Normal file → Executable file
|
|
@ -41,22 +41,22 @@ Budgets
|
||||||
<field name="model">account.budget.post</field>
|
<field name="model">account.budget.post</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Budgetary Position">
|
<form string="Budgetary Position">
|
||||||
<sheet>
|
<sheet>
|
||||||
<group col="4">
|
<group col="4">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="Accounts" name="accounts">
|
<page string="Accounts" name="accounts">
|
||||||
<field name="account_ids">
|
<field name="account_ids">
|
||||||
<tree>
|
<tree>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
@ -75,7 +75,7 @@ Budgets
|
||||||
class="oe_highlight"/>
|
class="oe_highlight"/>
|
||||||
<button string="Reset to Draft" name="action_budget_draft" states="cancel" type="object"/>
|
<button string="Reset to Draft" name="action_budget_draft" states="cancel" type="object"/>
|
||||||
<button string="Cancel Budget" name="action_budget_cancel" states="confirm,validate" type="object"/>
|
<button string="Cancel Budget" name="action_budget_cancel" states="confirm,validate" type="object"/>
|
||||||
<field name="state" widget="statusbar"/>
|
<field name="state" widget="statusbar" />
|
||||||
</header>
|
</header>
|
||||||
<sheet string="Budget">
|
<sheet string="Budget">
|
||||||
<div class="oe_title">
|
<div class="oe_title">
|
||||||
|
|
@ -86,8 +86,7 @@ Budgets
|
||||||
</div>
|
</div>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="user_id" attrs="{'readonly':[('state','!=','draft')]}"
|
<field name="user_id" attrs="{'readonly':[('state','!=','draft')]}" domain="[('share', '=', False)]"/>
|
||||||
domain="[('share', '=', False)]"/>
|
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<label for="date_from" string="Period"/>
|
<label for="date_from" string="Period"/>
|
||||||
|
|
@ -106,14 +105,9 @@ Budgets
|
||||||
<field name="crossovered_budget_line"
|
<field name="crossovered_budget_line"
|
||||||
context="{'default_date_from': date_from,'default_date_to': date_to}" colspan="4"
|
context="{'default_date_from': date_from,'default_date_to': date_to}" colspan="4"
|
||||||
nolabel="1" attrs="{'readonly':[('state','!=','draft')]}">
|
nolabel="1" attrs="{'readonly':[('state','!=','draft')]}">
|
||||||
<tree string="Budget Lines"
|
<tree string="Budget Lines" decoration-success="is_above_budget and planned_amount > 0" decoration-danger="is_above_budget and planned_amount < 0" editable="bottom">
|
||||||
decoration-success="is_above_budget and planned_amount > 0"
|
<field name="general_budget_id" domain="['|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]" optional="show"/>
|
||||||
decoration-danger="is_above_budget and planned_amount < 0" editable="bottom">
|
<field name="analytic_account_id" domain="['|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
|
||||||
<field name="general_budget_id"
|
|
||||||
domain="['|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]"/>
|
|
||||||
<field name="analytic_account_id"
|
|
||||||
domain="['|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]"
|
|
||||||
groups="analytic.group_analytic_accounting"/>
|
|
||||||
<field name="date_from"/>
|
<field name="date_from"/>
|
||||||
<field name="date_to"/>
|
<field name="date_to"/>
|
||||||
<field name="paid_date" groups="base.group_no_one"/>
|
<field name="paid_date" groups="base.group_no_one"/>
|
||||||
|
|
@ -121,7 +115,7 @@ Budgets
|
||||||
<field name="planned_amount" sum="Planned Amount"/>
|
<field name="planned_amount" sum="Planned Amount"/>
|
||||||
<field name="practical_amount" sum="Practical Amount"/>
|
<field name="practical_amount" sum="Practical Amount"/>
|
||||||
<field name="theoritical_amount" sum="Theoretical Amount"/>
|
<field name="theoritical_amount" sum="Theoretical Amount"/>
|
||||||
<field name="percentage" widget="percentage"/>
|
<field name="percentage" widget="percentage" />
|
||||||
<button type="object" name="action_open_budget_entries" string="Entries..."
|
<button type="object" name="action_open_budget_entries" string="Entries..."
|
||||||
icon="fa-arrow-circle-o-right"/>
|
icon="fa-arrow-circle-o-right"/>
|
||||||
<field name="is_above_budget" invisible="1"/>
|
<field name="is_above_budget" invisible="1"/>
|
||||||
|
|
@ -236,12 +230,12 @@ Budgets
|
||||||
help="To Approve Budgets"/>
|
help="To Approve Budgets"/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||||||
domain="[('activity_ids.date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
domain="[('activity_ids.date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||||||
help="Show all records which has next action date is before today"/>
|
help="Show all records which has next action date is before today"/>
|
||||||
<filter invisible="1" string="Today Activities" name="activities_today"
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
||||||
domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||||||
domain="[('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
domain="[('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
@ -252,7 +246,7 @@ Budgets
|
||||||
<field name="view_mode">tree,kanban,form</field>
|
<field name="view_mode">tree,kanban,form</field>
|
||||||
<field name="view_id" ref="crossovered_budget_view_tree"/>
|
<field name="view_id" ref="crossovered_budget_view_tree"/>
|
||||||
<field name="search_view_id" ref="view_crossovered_budget_search"/>
|
<field name="search_view_id" ref="view_crossovered_budget_search"/>
|
||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="o_view_nocontent_smiling_face">
|
<p class="o_view_nocontent_smiling_face">
|
||||||
Click to create a new budget.
|
Click to create a new budget.
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -274,13 +268,11 @@ Budgets
|
||||||
<search string="Budget Lines">
|
<search string="Budget Lines">
|
||||||
<field name="analytic_account_id"/>
|
<field name="analytic_account_id"/>
|
||||||
<field name="crossovered_budget_id"/>
|
<field name="crossovered_budget_id"/>
|
||||||
<filter name="filter_not_cancelled" string="Not Cancelled"
|
<filter name="filter_not_cancelled" string="Not Cancelled" domain="[('crossovered_budget_state','!=','cancel')]"/>
|
||||||
domain="[('crossovered_budget_state','!=','cancel')]"/>
|
|
||||||
<separator/>
|
<separator/>
|
||||||
<filter string="Date" name="filter_date_from" date="date_from"/>
|
<filter string="Date" name="filter_date_from" date="date_from"/>
|
||||||
<group expand="0" string="Group By">
|
<group expand="0" string="Group By">
|
||||||
<filter name="group_crossevered_budgdet_id" string="Budgets" domain="[]"
|
<filter name="group_crossevered_budgdet_id" string="Budgets" domain="[]" context="{'group_by':'crossovered_budget_id'}"/>
|
||||||
context="{'group_by':'crossovered_budget_id'}"/>
|
|
||||||
</group>
|
</group>
|
||||||
</search>
|
</search>
|
||||||
|
|
||||||
|
|
@ -294,12 +286,12 @@ Budgets
|
||||||
<tree string="Budget Lines" create="0">
|
<tree string="Budget Lines" create="0">
|
||||||
<field name="currency_id" invisible="1"/>
|
<field name="currency_id" invisible="1"/>
|
||||||
<field name="crossovered_budget_id" invisible="1"/>
|
<field name="crossovered_budget_id" invisible="1"/>
|
||||||
<field name="general_budget_id"/>
|
<field name="general_budget_id" />
|
||||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" />
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
<field name="date_from"/>
|
<field name="date_from" />
|
||||||
<field name="date_to"/>
|
<field name="date_to" />
|
||||||
<field name="paid_date" groups="base.group_no_one"/>
|
<field name="paid_date" groups="base.group_no_one" />
|
||||||
<field name="planned_amount"/>
|
<field name="planned_amount"/>
|
||||||
<field name="practical_amount"/>
|
<field name="practical_amount"/>
|
||||||
<field name="theoritical_amount"/>
|
<field name="theoritical_amount"/>
|
||||||
|
|
@ -316,65 +308,29 @@ Budgets
|
||||||
<group col="4">
|
<group col="4">
|
||||||
<field name="currency_id" invisible="1"/>
|
<field name="currency_id" invisible="1"/>
|
||||||
<field name="crossovered_budget_state" invisible="1"/>
|
<field name="crossovered_budget_state" invisible="1"/>
|
||||||
<field name="crossovered_budget_id"
|
<field name="crossovered_budget_id" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
<field name="analytic_account_id" domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
<field name="analytic_account_id"
|
<field name="general_budget_id" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]"
|
<field name="date_from" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
<field name="date_to" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
<field name="general_budget_id"
|
<field name="paid_date" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
<field name="date_from" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
<field name="date_to" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
<field name="paid_date" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
<field name="planned_amount" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
<field name="planned_amount" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
<field name="practical_amount"
|
<field name="practical_amount" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
<field name="theoritical_amount" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
<field name="theoritical_amount"
|
<field name="percentage" widget="percentage" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company" attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
||||||
<field name="percentage" widget="percentage"
|
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"
|
|
||||||
attrs="{'readonly':[('crossovered_budget_state','!=','draft')]}"/>
|
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="view_crossovered_budget_line_pivot">
|
|
||||||
<field name="name">crossovered.budget.line.pivot</field>
|
|
||||||
<field name="model">crossovered.budget.lines</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<pivot string="Budget Lines" sample="1">
|
|
||||||
<field name="crossovered_budget_id" type="row"/>
|
|
||||||
<field name="planned_amount" type="measure" string="Planned amount"/>
|
|
||||||
<field name="theoritical_amount" type="measure" string="Theoretical amount"/>
|
|
||||||
<field name="practical_amount" type="measure" string="Practical amount"/>
|
|
||||||
<field name="percentage" type="measure" widget="percentage"/>
|
|
||||||
</pivot>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="view_crossovered_budget_line_graph">
|
|
||||||
<field name="name">crossovered.budget.line.graph</field>
|
|
||||||
<field name="model">crossovered.budget.lines</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<graph string="Budget Lines" sample="1">
|
|
||||||
<field name="crossovered_budget_id" type="row"/>
|
|
||||||
<field name="planned_amount" type="measure" string="Planned amount"/>
|
|
||||||
<field name="theoritical_amount" type="measure" string="Theoretical amount"/>
|
|
||||||
<field name="practical_amount" type="measure" string="Practical amount"/>
|
|
||||||
</graph>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
<record model="ir.actions.act_window" id="act_crossovered_budget_lines_view">
|
<record model="ir.actions.act_window" id="act_crossovered_budget_lines_view">
|
||||||
<field name="name">Budgets Analysis</field>
|
<field name="name">Budgets Analysis</field>
|
||||||
<field name="res_model">crossovered.budget.lines</field>
|
<field name="res_model">crossovered.budget.lines</field>
|
||||||
<field name="view_mode">tree,form,pivot,graph</field>
|
<field name="view_mode">tree,form,pivot,graph</field>
|
||||||
<field name="view_id" eval="False"/>
|
<field name="view_id" eval="False"/>
|
||||||
<field name="context">{'search_default_group_crossevered_budgdet_id': True,
|
<field name="context">{'search_default_group_crossevered_budgdet_id': True, 'search_default_filter_not_cancelled':True}</field>
|
||||||
'search_default_filter_not_cancelled':True}
|
|
||||||
</field>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<menuitem parent="account.account_reports_management_menu"
|
<menuitem parent="account.account_reports_management_menu"
|
||||||
|
|
@ -385,9 +341,7 @@ Budgets
|
||||||
<record id="act_account_analytic_account_cb_lines" model="ir.actions.act_window">
|
<record id="act_account_analytic_account_cb_lines" model="ir.actions.act_window">
|
||||||
<field name="name">Budget Items</field>
|
<field name="name">Budget Items</field>
|
||||||
<field name="res_model">crossovered.budget.lines</field>
|
<field name="res_model">crossovered.budget.lines</field>
|
||||||
<field name="context">{'search_default_analytic_account_id': [active_id], 'default_analytic_account_id':
|
<field name="context">{'search_default_analytic_account_id': [active_id], 'default_analytic_account_id': active_id}</field>
|
||||||
active_id}
|
|
||||||
</field>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
0
odex25_accounting/odex25_account_budget/views/res_config_settings_views.xml
Normal file → Executable file
0
odex25_accounting/odex25_account_budget/views/res_config_settings_views.xml
Normal file → Executable file
Loading…
Reference in New Issue