From 58488512c1ace6d7b098e68cc671e890e813a3ec Mon Sep 17 00:00:00 2001
From: expert
Date: Mon, 24 Jun 2024 14:19:28 +0300
Subject: [PATCH] Add odex25_purchase
---
README.md | 2 +-
odex25_purchase/exp_analytic/__init__.py | 3 +
odex25_purchase/exp_analytic/__manifest__.py | 17 +
odex25_purchase/exp_analytic/i18n/ar_001.po | 41 +
.../exp_analytic/models/__init__.py | 3 +
odex25_purchase/exp_analytic/models/models.py | 8 +
odex25_purchase/exp_analytic/views/views.xml | 17 +
.../exp_dept_analytic_purchase/__init__.py | 3 +
.../__manifest__.py | 17 +
.../exp_dept_analytic_purchase/i18n/ar_001.po | 41 +
.../models/__init__.py | 3 +
.../models/models.py | 8 +
.../views/views.xml | 17 +
.../governmental_purchase/__init__.py | 4 +
.../governmental_purchase/__manifest__.py | 25 +
.../governmental_purchase/data/cron_data.xml | 15 +
.../data/mail_template.xml | 18 +
.../governmental_purchase/i18n/ar_001.po | 816 ++++++
.../governmental_purchase/models/__init__.py | 7 +
.../models/account_budget.py | 11 +
.../models/budget_confirmation.py | 39 +
.../models/purchase_order.py | 46 +
.../models/purchase_request.py | 148 +
.../models/purchase_requisition.py | 15 +
.../models/res_company.py | 18 +
.../security/ir.model.access.csv | 12 +
.../security/security.xml | 123 +
.../views/budget_confirmation_view.xml | 21 +
.../views/purchase_order_views.xml | 109 +
.../views/purchase_request_views.xml | 201 ++
.../views/purchase_requisition_views.xml | 27 +
.../views/res_setting.xml | 31 +
.../governmental_purchase/wizard/__init__.py | 2 +
.../wizard/convert_to_contract.py | 50 +
.../wizard/convert_to_contract.xml | 31 +
odex25_purchase/khwalid_vendor/__init__.py | 2 +
.../khwalid_vendor/__manifest__.py | 21 +
.../data/res_partner_sequence.xml | 15 +
odex25_purchase/khwalid_vendor/i18n/ar_SY.po | 157 ++
.../khwalid_vendor/models/__init__.py | 1 +
.../khwalid_vendor/models/res_parnter.py | 70 +
.../security/ir.model.access.csv | 2 +
.../khwalid_vendor/security/secuirty.xml | 38 +
.../static/description/icon.png | Bin 0 -> 5467 bytes
.../static/fonts/ae_AlMohanad.ttf | Bin 0 -> 120920 bytes
.../khwalid_vendor/views/res_partner.xml | 34 +
.../khwalid_vendor/wizard/__init__.py | 1 +
.../khwalid_vendor/wizard/messeage_wiz.py | 30 +
.../khwalid_vendor/wizard/messeage_wiz.xml | 34 +
odex25_purchase/odex25_purchase/__init__.py | 3 +
.../odex25_purchase/__manifest__.py | 23 +
.../data/purchase_order_demo.xml | 74 +
odex25_purchase/odex25_purchase/i18n/ar.po | 71 +
.../report/purchase_report_views.xml | 48 +
.../static/description/icon.png | Bin 0 -> 32929 bytes
.../odex25_purchase_coc/__init__.py | 4 +
.../odex25_purchase_coc/__manifest__.py | 31 +
.../controllers/__init__.py | 3 +
.../controllers/controllers.py | 20 +
.../odex25_purchase_coc/demo/demo.xml | 30 +
.../odex25_purchase_coc/i18n/ar_001.po | 319 +++
.../odex25_purchase_coc/i18n/ar_SY.po | 319 +++
.../odex25_purchase_coc/i18n/ar_SY_old.po | 245 ++
.../odex25_purchase_coc/models/__init__.py | 3 +
.../odex25_purchase_coc/models/models.py | 187 ++
.../security/ir.model.access.csv | 4 +
.../odex25_purchase_coc/security/security.xml | 22 +
.../odex25_purchase_coc/sequence/seq.xml | 13 +
.../static/description/icon.png | Bin 0 -> 5467 bytes
.../static/src/css/loginpage.css | 16 +
.../static/src/js/online_tender.js | 31 +
.../static/src/xml/tender_templates.xml | 40 +
.../odex25_purchase_coc/views/views.xml | 91 +
.../odex25_taqeem_purchase/__init__.py | 1 +
.../odex25_taqeem_purchase/__manifest__.py | 27 +
.../odex25_taqeem_purchase/i18n/ar_001.po | 830 ++++++
.../odex25_taqeem_purchase/models/__init__.py | 3 +
.../models/account_analytic_account.py | 8 +
.../models/budget_confirmation.py | 10 +
.../models/competitive_purchase_attachment.py | 12 +
.../models/purchase_request.py | 300 ++
.../models/res_company.py | 15 +
.../models/res_config_setting.py | 41 +
.../models/res_partner.py | 30 +
.../security/ir.model.access.csv | 9 +
.../security/security.xml | 29 +
.../views/account_analytic_account_views.xml | 14 +
.../views/competitive_purchase_attachment.xml | 39 +
.../views/competitve_purchase.xml | 187 ++
.../views/direct_purchase.xml | 155 ++
.../views/purchase_less_thirty_view.xml | 169 ++
.../views/res_company.xml | 18 +
.../views/res_config_setting.xml | 33 +
.../views/res_partner.xml | 21 +
.../odex_online_tendering/__init__.py | 4 +
.../odex_online_tendering/__manifest__.py | 29 +
.../controllers/__init__.py | 3 +
.../controllers/controllers.py | 20 +
.../odex_online_tendering/demo/demo.xml | 30 +
.../odex_online_tendering/models/__init__.py | 3 +
.../odex_online_tendering/models/models.py | 21 +
.../security/ir.model.access.csv | 2 +
.../static/description/icon.png | Bin 0 -> 5467 bytes
.../odex_online_tendering/views/templates.xml | 22 +
.../odex_online_tendering/views/views.xml | 60 +
.../.editorconfig | 17 +
.../.github/workflows/release.yml | 38 +
.../odoo_multiple_product_images/.gitignore | 9 +
.../odoo_multiple_product_images/__init__.py | 3 +
.../__manifest__.py | 22 +
.../data/clean_orphans_images.xml | 17 +
.../odoo_multiple_product_images/i18n/ar.po | 305 ++
.../odoo_multiple_product_images/i18n/de.po | 311 +++
.../i18n/en_US.po | 304 ++
.../odoo_multiple_product_images/i18n/es.po | 312 +++
.../odoo_multiple_product_images/i18n/fr.po | 312 +++
.../odoo_multiple_product_images/i18n/it.po | 311 +++
.../odoo_multiple_product_images/i18n/nl.po | 311 +++
.../models/__init__.py | 3 +
.../models/product_image_backend.py | 174 ++
.../security/ir.model.access.csv | 13 +
.../static/description/alliantum.png | Bin 0 -> 37860 bytes
.../static/description/icon.png | Bin 0 -> 27532 bytes
.../static/description/index.html | 152 +
.../static/description/screenshot.png | Bin 0 -> 419065 bytes
.../static/description/screenshot1.png | Bin 0 -> 45684 bytes
.../static/description/screenshot2.png | Bin 0 -> 146917 bytes
.../static/description/screenshot3.png | Bin 0 -> 48936 bytes
.../src/js/web_ir_actions_act_view_reload.js | 38 +
.../static/src/scss/multiple_images.scss | 148 +
.../views/assets.xml | 12 +
.../views/product_image_backend.xml | 308 +++
odex25_purchase/online_tendering/__init__.py | 5 +
.../online_tendering/__manifest__.py | 47 +
.../online_tendering/controllers/__init__.py | 3 +
.../controllers/controllers.py | 297 ++
.../online_tendering/data/mail_templates.xml | 49 +
.../online_tendering/demo/demo.xml | 30 +
.../online_tendering/i18n/ar_001.po | 943 +++++++
.../online_tendering/i18n/ar_SY.po | 810 ++++++
.../online_tendering/models/__init__.py | 6 +
.../online_tendering/models/models.py | 15 +
.../models/onlline_tender_conf.py | 7 +
.../models/purchase_requsition.py | 98 +
.../online_tendering/models/res_models.py | 24 +
.../models/tender_application.py | 152 +
.../reports/online_tender_report.xml | 208 ++
.../reports/report_actions.xml | 13 +
.../security/.~lock.ir.model.access.csv# | 1 +
.../online_tendering/security/groups.xml | 19 +
.../security/ir.model.access.csv | 11 +
.../online_tendering/security/rules.xml | 15 +
.../online_tendering/sequence/seq.xml | 13 +
.../static/description/icon.png | Bin 0 -> 14177 bytes
.../static/src/css/loginpage.css | 16 +
.../static/src/js/online_tender.js | 29 +
.../static/src/xml/tender_templates.xml | 40 +
.../views/online_tender_configuration.xml | 33 +
.../views/purchase_requsition_veiw.xml | 75 +
.../online_tendering/views/templates.xml | 382 +++
.../views/tender_application.xml | 208 ++
.../online_tendering/wizard/__init__.py | 1 +
.../wizard/online_tendering_wizard.py | 98 +
.../wizard/online_tendering_wizard.xml | 41 +
.../purchase_custom_report/__init__.py | 3 +
.../purchase_custom_report/__manifest__.py | 27 +
.../purchase_custom_report/i18n/ar_001.po | 1123 ++++++++
.../purchase_custom_report/models/__init__.py | 0
.../models/category_custom.py | 0
.../reports/employee_purchase_report.xml | 170 ++
.../employee_purchase_requistion_report.xml | 341 +++
.../reports/purchase_committe_report.xml | 275 ++
.../reports/purchase_general_report.xml | 143 +
.../reports/purchase_total_report.xml | 168 ++
.../reports/report_actions.xml | 72 +
.../reports/report_template.xml | 403 +++
.../security/ir.model.access.csv | 8 +
.../static/description/icon.png | Bin 0 -> 32929 bytes
.../static/fonts/ae_AlMohanad.ttf | Bin 0 -> 120920 bytes
.../static/src/css/reports_style_sheet.css | 3 +
.../static/src/css/website_rtl.css | 22 +
.../views/asset_custom.xml | 136 +
.../views/backend_assets.xml | 8 +
.../purchase_custom_report/wizard/__init__.py | 5 +
.../wizard/employee_purchase_report_wizard.py | 105 +
.../employee_purchase_report_wizard.xml | 41 +
...loyee_purchase_requistion_report_wizard.py | 144 +
...oyee_purchase_requitsion_report_wizard.xml | 42 +
.../wizard/purchas_wizard_view.xml | 0
.../wizard/purchase_committee_report.py | 114 +
.../wizard/purchase_committee_report.xml | 42 +
.../wizard/purchase_general_report_wizard.py | 93 +
.../wizard/purchase_general_report_wizard.xml | 43 +
.../wizard/purchase_total_report_wizard.py | 153 +
.../wizard/purchase_total_report_wizard.xml | 43 +
.../wizard/purchase_wizard.py | 394 +++
.../purchase_requisition_custom/__init__.py | 3 +
.../__manifest__.py | 30 +
.../data/cron_data.xml | 18 +
.../data/mail_template.xml | 21 +
.../data/purchase_request_seq.xml | 13 +
.../data/purchase_sequence.xml | 13 +
.../i18n/ar_001.po | 2267 +++++++++++++++
.../purchase_requisition_custom/i18n/ar_SY.po | 2464 +++++++++++++++++
.../models/__init__.py | 9 +
.../models/account_invoice.py | 66 +
.../models/account_payment.py | 25 +
.../models/account_res.py | 25 +
.../models/budget_confirmation.py | 70 +
.../models/committe.py | 8 +
.../models/evaluation_criteria.py | 26 +
.../models/purchase_order.py | 694 +++++
.../models/purchase_request.py | 332 +++
.../models/purchase_requisition_custom.py | 603 ++++
.../models/res_company.py | 17 +
.../models/res_partner.py | 61 +
.../models/res_settings.py | 37 +
.../models/res_users.py | 22 +
.../models/vendor_type.py | 7 +
.../committee_meeting_minutes_report.xml | 280 ++
.../reports/external_layout.xml | 38 +
.../security/category_groups.xml | 133 +
.../security/ir.model.access.csv | 33 +
.../security/rules.xml | 87 +
.../static/description/icon.png | Bin 0 -> 32929 bytes
.../static/fonts/ae_AlMohanad.ttf | Bin 0 -> 120920 bytes
.../static/src/css/website_rtl.css | 22 +
.../views/budget_confirmation.xml | 16 +
.../views/product_category.xml | 17 +
.../views/purchase_commitee.xml | 56 +
.../views/purchase_request.xml | 158 ++
.../views/purchase_requisition_custom.xml | 632 +++++
.../views/res_setting.xml | 81 +
.../views/vendor_type.xml | 30 +
.../wizards/__init__.py | 2 +
.../wizards/cancel_purchase_request.py | 32 +
.../wizards/cancel_purchase_request.xml | 27 +
.../wizards/convert_to_contract.py | 88 +
.../wizards/convert_to_contract.xml | 41 +
odex25_purchase/vendor_evaluation/__init__.py | 4 +
.../vendor_evaluation/__manifest__.py | 37 +
.../vendor_evaluation/controllers/__init__.py | 3 +
.../controllers/controllers.py | 20 +
.../vendor_evaluation/demo/demo.xml | 30 +
.../vendor_evaluation/i18n/ar_001.po | 556 ++++
.../vendor_evaluation/i18n/ar_SY.po | 554 ++++
.../vendor_evaluation/models/__init__.py | 8 +
.../models/account_invoice.py | 37 +
.../models/evaluation_criteria.py | 31 +
.../models/purchase_order.py | 37 +
.../vendor_evaluation/models/res_models.py | 30 +
.../vendor_evaluation/models/stock.py | 37 +
.../models/vendor_evaluation.py | 137 +
.../security/ir.model.access.csv | 14 +
.../vendor_evaluation/security/res_groups.xml | 30 +
.../static/description/icon.png | Bin 0 -> 5467 bytes
.../static/src/css/loginpage.css | 16 +
.../static/src/js/online_tender.js | 31 +
.../static/src/xml/tender_templates.xml | 40 +
.../views/account_invoice_view.xml | 20 +
.../views/evaluatioin_criteria_veiw.xml | 137 +
.../views/purchase_orde_view.xml | 14 +
.../vendor_evaluation/views/reports.xml | 22 +
.../views/res_models_views.xml | 31 +
.../vendor_evaluation/views/stock.xml | 20 +
.../vendor_evaluation/views/templates.xml | 211 ++
.../views/vendor_evaluatoin_view.xml | 181 ++
.../vendor_evaluation/views/views.xml | 60 +
.../vendor_evaluation/wizard/__init__.py | 1 +
.../wizard/vendor_comparison.py | 100 +
270 files changed, 28078 insertions(+), 1 deletion(-)
create mode 100644 odex25_purchase/exp_analytic/__init__.py
create mode 100644 odex25_purchase/exp_analytic/__manifest__.py
create mode 100644 odex25_purchase/exp_analytic/i18n/ar_001.po
create mode 100644 odex25_purchase/exp_analytic/models/__init__.py
create mode 100644 odex25_purchase/exp_analytic/models/models.py
create mode 100644 odex25_purchase/exp_analytic/views/views.xml
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/__init__.py
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/__manifest__.py
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/i18n/ar_001.po
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/models/__init__.py
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/models/models.py
create mode 100644 odex25_purchase/exp_dept_analytic_purchase/views/views.xml
create mode 100644 odex25_purchase/governmental_purchase/__init__.py
create mode 100644 odex25_purchase/governmental_purchase/__manifest__.py
create mode 100644 odex25_purchase/governmental_purchase/data/cron_data.xml
create mode 100644 odex25_purchase/governmental_purchase/data/mail_template.xml
create mode 100644 odex25_purchase/governmental_purchase/i18n/ar_001.po
create mode 100644 odex25_purchase/governmental_purchase/models/__init__.py
create mode 100644 odex25_purchase/governmental_purchase/models/account_budget.py
create mode 100644 odex25_purchase/governmental_purchase/models/budget_confirmation.py
create mode 100644 odex25_purchase/governmental_purchase/models/purchase_order.py
create mode 100644 odex25_purchase/governmental_purchase/models/purchase_request.py
create mode 100644 odex25_purchase/governmental_purchase/models/purchase_requisition.py
create mode 100644 odex25_purchase/governmental_purchase/models/res_company.py
create mode 100644 odex25_purchase/governmental_purchase/security/ir.model.access.csv
create mode 100644 odex25_purchase/governmental_purchase/security/security.xml
create mode 100644 odex25_purchase/governmental_purchase/views/budget_confirmation_view.xml
create mode 100644 odex25_purchase/governmental_purchase/views/purchase_order_views.xml
create mode 100644 odex25_purchase/governmental_purchase/views/purchase_request_views.xml
create mode 100644 odex25_purchase/governmental_purchase/views/purchase_requisition_views.xml
create mode 100644 odex25_purchase/governmental_purchase/views/res_setting.xml
create mode 100644 odex25_purchase/governmental_purchase/wizard/__init__.py
create mode 100644 odex25_purchase/governmental_purchase/wizard/convert_to_contract.py
create mode 100644 odex25_purchase/governmental_purchase/wizard/convert_to_contract.xml
create mode 100644 odex25_purchase/khwalid_vendor/__init__.py
create mode 100644 odex25_purchase/khwalid_vendor/__manifest__.py
create mode 100644 odex25_purchase/khwalid_vendor/data/res_partner_sequence.xml
create mode 100644 odex25_purchase/khwalid_vendor/i18n/ar_SY.po
create mode 100644 odex25_purchase/khwalid_vendor/models/__init__.py
create mode 100644 odex25_purchase/khwalid_vendor/models/res_parnter.py
create mode 100644 odex25_purchase/khwalid_vendor/security/ir.model.access.csv
create mode 100644 odex25_purchase/khwalid_vendor/security/secuirty.xml
create mode 100644 odex25_purchase/khwalid_vendor/static/description/icon.png
create mode 100644 odex25_purchase/khwalid_vendor/static/fonts/ae_AlMohanad.ttf
create mode 100644 odex25_purchase/khwalid_vendor/views/res_partner.xml
create mode 100644 odex25_purchase/khwalid_vendor/wizard/__init__.py
create mode 100644 odex25_purchase/khwalid_vendor/wizard/messeage_wiz.py
create mode 100644 odex25_purchase/khwalid_vendor/wizard/messeage_wiz.xml
create mode 100644 odex25_purchase/odex25_purchase/__init__.py
create mode 100644 odex25_purchase/odex25_purchase/__manifest__.py
create mode 100644 odex25_purchase/odex25_purchase/data/purchase_order_demo.xml
create mode 100644 odex25_purchase/odex25_purchase/i18n/ar.po
create mode 100644 odex25_purchase/odex25_purchase/report/purchase_report_views.xml
create mode 100644 odex25_purchase/odex25_purchase/static/description/icon.png
create mode 100644 odex25_purchase/odex25_purchase_coc/__init__.py
create mode 100644 odex25_purchase/odex25_purchase_coc/__manifest__.py
create mode 100644 odex25_purchase/odex25_purchase_coc/controllers/__init__.py
create mode 100644 odex25_purchase/odex25_purchase_coc/controllers/controllers.py
create mode 100644 odex25_purchase/odex25_purchase_coc/demo/demo.xml
create mode 100644 odex25_purchase/odex25_purchase_coc/i18n/ar_001.po
create mode 100644 odex25_purchase/odex25_purchase_coc/i18n/ar_SY.po
create mode 100644 odex25_purchase/odex25_purchase_coc/i18n/ar_SY_old.po
create mode 100644 odex25_purchase/odex25_purchase_coc/models/__init__.py
create mode 100644 odex25_purchase/odex25_purchase_coc/models/models.py
create mode 100644 odex25_purchase/odex25_purchase_coc/security/ir.model.access.csv
create mode 100644 odex25_purchase/odex25_purchase_coc/security/security.xml
create mode 100644 odex25_purchase/odex25_purchase_coc/sequence/seq.xml
create mode 100644 odex25_purchase/odex25_purchase_coc/static/description/icon.png
create mode 100644 odex25_purchase/odex25_purchase_coc/static/src/css/loginpage.css
create mode 100644 odex25_purchase/odex25_purchase_coc/static/src/js/online_tender.js
create mode 100644 odex25_purchase/odex25_purchase_coc/static/src/xml/tender_templates.xml
create mode 100644 odex25_purchase/odex25_purchase_coc/views/views.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/__init__.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/__manifest__.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/i18n/ar_001.po
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/__init__.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/account_analytic_account.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/budget_confirmation.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/competitive_purchase_attachment.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/purchase_request.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/res_company.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/res_config_setting.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/models/res_partner.py
create mode 100644 odex25_purchase/odex25_taqeem_purchase/security/ir.model.access.csv
create mode 100644 odex25_purchase/odex25_taqeem_purchase/security/security.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/account_analytic_account_views.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/competitive_purchase_attachment.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/competitve_purchase.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/direct_purchase.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/purchase_less_thirty_view.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/res_company.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/res_config_setting.xml
create mode 100644 odex25_purchase/odex25_taqeem_purchase/views/res_partner.xml
create mode 100644 odex25_purchase/odex_online_tendering/__init__.py
create mode 100644 odex25_purchase/odex_online_tendering/__manifest__.py
create mode 100644 odex25_purchase/odex_online_tendering/controllers/__init__.py
create mode 100644 odex25_purchase/odex_online_tendering/controllers/controllers.py
create mode 100644 odex25_purchase/odex_online_tendering/demo/demo.xml
create mode 100644 odex25_purchase/odex_online_tendering/models/__init__.py
create mode 100644 odex25_purchase/odex_online_tendering/models/models.py
create mode 100644 odex25_purchase/odex_online_tendering/security/ir.model.access.csv
create mode 100644 odex25_purchase/odex_online_tendering/static/description/icon.png
create mode 100644 odex25_purchase/odex_online_tendering/views/templates.xml
create mode 100644 odex25_purchase/odex_online_tendering/views/views.xml
create mode 100644 odex25_purchase/odoo_multiple_product_images/.editorconfig
create mode 100644 odex25_purchase/odoo_multiple_product_images/.github/workflows/release.yml
create mode 100644 odex25_purchase/odoo_multiple_product_images/.gitignore
create mode 100644 odex25_purchase/odoo_multiple_product_images/__init__.py
create mode 100644 odex25_purchase/odoo_multiple_product_images/__manifest__.py
create mode 100644 odex25_purchase/odoo_multiple_product_images/data/clean_orphans_images.xml
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/ar.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/de.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/en_US.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/es.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/fr.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/it.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/i18n/nl.po
create mode 100644 odex25_purchase/odoo_multiple_product_images/models/__init__.py
create mode 100644 odex25_purchase/odoo_multiple_product_images/models/product_image_backend.py
create mode 100644 odex25_purchase/odoo_multiple_product_images/security/ir.model.access.csv
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/alliantum.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/icon.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/index.html
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/screenshot.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/screenshot1.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/screenshot2.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/description/screenshot3.png
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/src/js/web_ir_actions_act_view_reload.js
create mode 100644 odex25_purchase/odoo_multiple_product_images/static/src/scss/multiple_images.scss
create mode 100644 odex25_purchase/odoo_multiple_product_images/views/assets.xml
create mode 100644 odex25_purchase/odoo_multiple_product_images/views/product_image_backend.xml
create mode 100644 odex25_purchase/online_tendering/__init__.py
create mode 100644 odex25_purchase/online_tendering/__manifest__.py
create mode 100644 odex25_purchase/online_tendering/controllers/__init__.py
create mode 100644 odex25_purchase/online_tendering/controllers/controllers.py
create mode 100644 odex25_purchase/online_tendering/data/mail_templates.xml
create mode 100644 odex25_purchase/online_tendering/demo/demo.xml
create mode 100644 odex25_purchase/online_tendering/i18n/ar_001.po
create mode 100644 odex25_purchase/online_tendering/i18n/ar_SY.po
create mode 100644 odex25_purchase/online_tendering/models/__init__.py
create mode 100644 odex25_purchase/online_tendering/models/models.py
create mode 100644 odex25_purchase/online_tendering/models/onlline_tender_conf.py
create mode 100644 odex25_purchase/online_tendering/models/purchase_requsition.py
create mode 100644 odex25_purchase/online_tendering/models/res_models.py
create mode 100644 odex25_purchase/online_tendering/models/tender_application.py
create mode 100644 odex25_purchase/online_tendering/reports/online_tender_report.xml
create mode 100644 odex25_purchase/online_tendering/reports/report_actions.xml
create mode 100644 odex25_purchase/online_tendering/security/.~lock.ir.model.access.csv#
create mode 100644 odex25_purchase/online_tendering/security/groups.xml
create mode 100644 odex25_purchase/online_tendering/security/ir.model.access.csv
create mode 100644 odex25_purchase/online_tendering/security/rules.xml
create mode 100644 odex25_purchase/online_tendering/sequence/seq.xml
create mode 100644 odex25_purchase/online_tendering/static/description/icon.png
create mode 100644 odex25_purchase/online_tendering/static/src/css/loginpage.css
create mode 100644 odex25_purchase/online_tendering/static/src/js/online_tender.js
create mode 100644 odex25_purchase/online_tendering/static/src/xml/tender_templates.xml
create mode 100644 odex25_purchase/online_tendering/views/online_tender_configuration.xml
create mode 100644 odex25_purchase/online_tendering/views/purchase_requsition_veiw.xml
create mode 100644 odex25_purchase/online_tendering/views/templates.xml
create mode 100644 odex25_purchase/online_tendering/views/tender_application.xml
create mode 100644 odex25_purchase/online_tendering/wizard/__init__.py
create mode 100644 odex25_purchase/online_tendering/wizard/online_tendering_wizard.py
create mode 100644 odex25_purchase/online_tendering/wizard/online_tendering_wizard.xml
create mode 100644 odex25_purchase/purchase_custom_report/__init__.py
create mode 100644 odex25_purchase/purchase_custom_report/__manifest__.py
create mode 100644 odex25_purchase/purchase_custom_report/i18n/ar_001.po
create mode 100644 odex25_purchase/purchase_custom_report/models/__init__.py
create mode 100644 odex25_purchase/purchase_custom_report/models/category_custom.py
create mode 100644 odex25_purchase/purchase_custom_report/reports/employee_purchase_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/employee_purchase_requistion_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/purchase_committe_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/purchase_general_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/purchase_total_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/report_actions.xml
create mode 100644 odex25_purchase/purchase_custom_report/reports/report_template.xml
create mode 100644 odex25_purchase/purchase_custom_report/security/ir.model.access.csv
create mode 100644 odex25_purchase/purchase_custom_report/static/description/icon.png
create mode 100644 odex25_purchase/purchase_custom_report/static/fonts/ae_AlMohanad.ttf
create mode 100644 odex25_purchase/purchase_custom_report/static/src/css/reports_style_sheet.css
create mode 100644 odex25_purchase/purchase_custom_report/static/src/css/website_rtl.css
create mode 100644 odex25_purchase/purchase_custom_report/views/asset_custom.xml
create mode 100644 odex25_purchase/purchase_custom_report/views/backend_assets.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/__init__.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/employee_purchase_report_wizard.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/employee_purchase_report_wizard.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/employee_purchase_requistion_report_wizard.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/employee_purchase_requitsion_report_wizard.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchas_wizard_view.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_committee_report.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_committee_report.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_general_report_wizard.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_general_report_wizard.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_total_report_wizard.py
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_total_report_wizard.xml
create mode 100644 odex25_purchase/purchase_custom_report/wizard/purchase_wizard.py
create mode 100644 odex25_purchase/purchase_requisition_custom/__init__.py
create mode 100644 odex25_purchase/purchase_requisition_custom/__manifest__.py
create mode 100644 odex25_purchase/purchase_requisition_custom/data/cron_data.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/data/mail_template.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/data/purchase_request_seq.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/data/purchase_sequence.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/i18n/ar_001.po
create mode 100644 odex25_purchase/purchase_requisition_custom/i18n/ar_SY.po
create mode 100644 odex25_purchase/purchase_requisition_custom/models/__init__.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/account_invoice.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/account_payment.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/account_res.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/budget_confirmation.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/committe.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/evaluation_criteria.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/purchase_order.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/purchase_request.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/res_company.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/res_partner.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/res_settings.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/res_users.py
create mode 100644 odex25_purchase/purchase_requisition_custom/models/vendor_type.py
create mode 100644 odex25_purchase/purchase_requisition_custom/reports/committee_meeting_minutes_report.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/reports/external_layout.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/security/category_groups.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/security/ir.model.access.csv
create mode 100644 odex25_purchase/purchase_requisition_custom/security/rules.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/static/description/icon.png
create mode 100644 odex25_purchase/purchase_requisition_custom/static/fonts/ae_AlMohanad.ttf
create mode 100644 odex25_purchase/purchase_requisition_custom/static/src/css/website_rtl.css
create mode 100644 odex25_purchase/purchase_requisition_custom/views/budget_confirmation.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/product_category.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/purchase_commitee.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/purchase_request.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/purchase_requisition_custom.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/res_setting.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/views/vendor_type.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/wizards/__init__.py
create mode 100644 odex25_purchase/purchase_requisition_custom/wizards/cancel_purchase_request.py
create mode 100644 odex25_purchase/purchase_requisition_custom/wizards/cancel_purchase_request.xml
create mode 100644 odex25_purchase/purchase_requisition_custom/wizards/convert_to_contract.py
create mode 100644 odex25_purchase/purchase_requisition_custom/wizards/convert_to_contract.xml
create mode 100644 odex25_purchase/vendor_evaluation/__init__.py
create mode 100644 odex25_purchase/vendor_evaluation/__manifest__.py
create mode 100644 odex25_purchase/vendor_evaluation/controllers/__init__.py
create mode 100644 odex25_purchase/vendor_evaluation/controllers/controllers.py
create mode 100644 odex25_purchase/vendor_evaluation/demo/demo.xml
create mode 100644 odex25_purchase/vendor_evaluation/i18n/ar_001.po
create mode 100644 odex25_purchase/vendor_evaluation/i18n/ar_SY.po
create mode 100644 odex25_purchase/vendor_evaluation/models/__init__.py
create mode 100644 odex25_purchase/vendor_evaluation/models/account_invoice.py
create mode 100644 odex25_purchase/vendor_evaluation/models/evaluation_criteria.py
create mode 100644 odex25_purchase/vendor_evaluation/models/purchase_order.py
create mode 100644 odex25_purchase/vendor_evaluation/models/res_models.py
create mode 100644 odex25_purchase/vendor_evaluation/models/stock.py
create mode 100644 odex25_purchase/vendor_evaluation/models/vendor_evaluation.py
create mode 100644 odex25_purchase/vendor_evaluation/security/ir.model.access.csv
create mode 100644 odex25_purchase/vendor_evaluation/security/res_groups.xml
create mode 100644 odex25_purchase/vendor_evaluation/static/description/icon.png
create mode 100644 odex25_purchase/vendor_evaluation/static/src/css/loginpage.css
create mode 100644 odex25_purchase/vendor_evaluation/static/src/js/online_tender.js
create mode 100644 odex25_purchase/vendor_evaluation/static/src/xml/tender_templates.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/account_invoice_view.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/evaluatioin_criteria_veiw.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/purchase_orde_view.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/reports.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/res_models_views.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/stock.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/templates.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/vendor_evaluatoin_view.xml
create mode 100644 odex25_purchase/vendor_evaluation/views/views.xml
create mode 100644 odex25_purchase/vendor_evaluation/wizard/__init__.py
create mode 100644 odex25_purchase/vendor_evaluation/wizard/vendor_comparison.py
diff --git a/README.md b/README.md
index 8b10e6960..6864725ce 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
-# odex25-standard-moduless
+# odex25-standard-modules
This Repo contains general standard modules for all projects.
diff --git a/odex25_purchase/exp_analytic/__init__.py b/odex25_purchase/exp_analytic/__init__.py
new file mode 100644
index 000000000..5305644df
--- /dev/null
+++ b/odex25_purchase/exp_analytic/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
\ No newline at end of file
diff --git a/odex25_purchase/exp_analytic/__manifest__.py b/odex25_purchase/exp_analytic/__manifest__.py
new file mode 100644
index 000000000..501f07525
--- /dev/null
+++ b/odex25_purchase/exp_analytic/__manifest__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "Analytic account in hr department",
+ 'version': '14.0.1',
+ 'category': 'HR-Odex25',
+ 'author': 'Expert Co. Ltd.',
+ 'website': 'http://exp-sa.com',
+ 'depends': ['hr','analytic'],
+
+ # any module necessary for this one to work correctly
+
+ # always loaded
+ 'data': [
+ 'views/views.xml',
+
+ ]
+}
diff --git a/odex25_purchase/exp_analytic/i18n/ar_001.po b/odex25_purchase/exp_analytic/i18n/ar_001.po
new file mode 100644
index 000000000..a40cecf17
--- /dev/null
+++ b/odex25_purchase/exp_analytic/i18n/ar_001.po
@@ -0,0 +1,41 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * exp_analytic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-01-04 08:00+0000\n"
+"PO-Revision-Date: 2023-01-04 08:00+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_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__analytic_account_id
+msgid "Analytic Account"
+msgstr "الحساب التحليلي"
+
+#. module: exp_analytic
+#: model:ir.model,name:exp_analytic.model_hr_department
+msgid "Department"
+msgstr "القسم"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__id
+msgid "ID"
+msgstr "المُعرف"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
diff --git a/odex25_purchase/exp_analytic/models/__init__.py b/odex25_purchase/exp_analytic/models/__init__.py
new file mode 100644
index 000000000..cde864bae
--- /dev/null
+++ b/odex25_purchase/exp_analytic/models/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
diff --git a/odex25_purchase/exp_analytic/models/models.py b/odex25_purchase/exp_analytic/models/models.py
new file mode 100644
index 000000000..d6b76851e
--- /dev/null
+++ b/odex25_purchase/exp_analytic/models/models.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields
+class HrDepartment(models.Model):
+ _inherit = 'hr.department'
+
+ analytic_account_id = fields.Many2one('account.analytic.account',
+ 'Analytic Account')
diff --git a/odex25_purchase/exp_analytic/views/views.xml b/odex25_purchase/exp_analytic/views/views.xml
new file mode 100644
index 000000000..85f30f438
--- /dev/null
+++ b/odex25_purchase/exp_analytic/views/views.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ hr.department.analytic.inherit.form
+
+ hr.department
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/exp_dept_analytic_purchase/__init__.py b/odex25_purchase/exp_dept_analytic_purchase/__init__.py
new file mode 100644
index 000000000..5305644df
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
\ No newline at end of file
diff --git a/odex25_purchase/exp_dept_analytic_purchase/__manifest__.py b/odex25_purchase/exp_dept_analytic_purchase/__manifest__.py
new file mode 100644
index 000000000..6bb236edc
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/__manifest__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "Analytic account in hr department",
+ 'version': '14.0.1',
+ 'category': 'Odex25-Purchase/Odex25-Purchase',
+ 'author': 'Expert Co. Ltd.',
+ 'website': 'http://exp-sa.com',
+ 'depends': ['hr','analytic'],
+
+ # any module necessary for this one to work correctly
+
+ # always loaded
+ 'data': [
+ 'views/views.xml',
+
+ ]
+}
diff --git a/odex25_purchase/exp_dept_analytic_purchase/i18n/ar_001.po b/odex25_purchase/exp_dept_analytic_purchase/i18n/ar_001.po
new file mode 100644
index 000000000..a40cecf17
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/i18n/ar_001.po
@@ -0,0 +1,41 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * exp_analytic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-01-04 08:00+0000\n"
+"PO-Revision-Date: 2023-01-04 08:00+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_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__analytic_account_id
+msgid "Analytic Account"
+msgstr "الحساب التحليلي"
+
+#. module: exp_analytic
+#: model:ir.model,name:exp_analytic.model_hr_department
+msgid "Department"
+msgstr "القسم"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department__id
+msgid "ID"
+msgstr "المُعرف"
+
+#. module: exp_analytic
+#: model:ir.model.fields,field_description:exp_analytic.field_hr_department____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
diff --git a/odex25_purchase/exp_dept_analytic_purchase/models/__init__.py b/odex25_purchase/exp_dept_analytic_purchase/models/__init__.py
new file mode 100644
index 000000000..cde864bae
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/models/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
diff --git a/odex25_purchase/exp_dept_analytic_purchase/models/models.py b/odex25_purchase/exp_dept_analytic_purchase/models/models.py
new file mode 100644
index 000000000..d6b76851e
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/models/models.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields
+class HrDepartment(models.Model):
+ _inherit = 'hr.department'
+
+ analytic_account_id = fields.Many2one('account.analytic.account',
+ 'Analytic Account')
diff --git a/odex25_purchase/exp_dept_analytic_purchase/views/views.xml b/odex25_purchase/exp_dept_analytic_purchase/views/views.xml
new file mode 100644
index 000000000..85f30f438
--- /dev/null
+++ b/odex25_purchase/exp_dept_analytic_purchase/views/views.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ hr.department.analytic.inherit.form
+
+ hr.department
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/__init__.py b/odex25_purchase/governmental_purchase/__init__.py
new file mode 100644
index 000000000..35e7c9600
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+
+from . import models
+from . import wizard
diff --git a/odex25_purchase/governmental_purchase/__manifest__.py b/odex25_purchase/governmental_purchase/__manifest__.py
new file mode 100644
index 000000000..580d650e6
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/__manifest__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-# -*- coding: utf-8 -*-
+{
+ 'name': 'Purchase Customizations For Governmental projects',
+ 'version': '1.1',
+ 'summary': 'Customize Purchase ',
+ 'sequence': -1,
+ 'author': "Expert Co Ltd",
+ 'website': "http://www.ex.com",
+ 'category': 'Odex25-Purchase/Odex25-Purchase',
+ 'description': """
+ """,
+ 'data': [
+ 'security/security.xml',
+ 'security/ir.model.access.csv',
+ 'data/cron_data.xml',
+ 'views/purchase_request_views.xml',
+ 'views/purchase_order_views.xml',
+ # 'views/res_setting.xml',
+ 'views/budget_confirmation_view.xml',
+ 'wizard/convert_to_contract.xml',
+ ],
+ 'depends': ['purchase_requisition_custom'],
+ 'installable': True,
+ 'application': False,
+}
diff --git a/odex25_purchase/governmental_purchase/data/cron_data.xml b/odex25_purchase/governmental_purchase/data/cron_data.xml
new file mode 100644
index 000000000..48ef99ed8
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/data/cron_data.xml
@@ -0,0 +1,15 @@
+
+
+
+ PO Contract Auto Notification
+
+ code
+ model.cron_po_auto_notify()
+
+ 1
+ days
+ -1
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/data/mail_template.xml b/odex25_purchase/governmental_purchase/data/mail_template.xml
new file mode 100644
index 000000000..2888df4a5
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/data/mail_template.xml
@@ -0,0 +1,18 @@
+
+
+
+ PO Auto Notify
+
+
+ ${object.responsible_id.partner_id.email}
+ Po Auto Notify
+ Dear ${object.responsible_id.name},
+ ${object.contract_name} Will Be Expired
+IN Purchase order: ${object.name}
+Vendor: ${object.partner_id.name}
+End Date: ${object.end_date}
+
+ ]]>
+
+
\ No newline at end of file
diff --git a/odex25_purchase/governmental_purchase/i18n/ar_001.po b/odex25_purchase/governmental_purchase/i18n/ar_001.po
new file mode 100644
index 000000000..74615b97b
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/i18n/ar_001.po
@@ -0,0 +1,816 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * governmental_purchase
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-09-28 10:14+0000\n"
+"PO-Revision-Date: 2023-09-28 10:14+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: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__strategic_objective__e_d_p
+msgid "3.1.1 Ease of doing business"
+msgstr "3.1.1 تسهيل ممارسة الأعمال"
+
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__strategic_objective__a_f_d_i
+msgid "3.1.6 Attracting foreign direct investment"
+msgstr "3.1.6 جذب الاستثمارات الأجنبية المباشرة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__strategic_objective__d_r_s
+msgid "3.3.5 Development of the retail sector"
+msgstr "3.3.5 تطوير قطاع التجزئة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__strategic_objective__i_c_e
+msgid "4.3.2 Increasing SMEs contribution to the economy"
+msgstr "4.3.2 زيادة مساهمة الشركات الصغيرة والمتوسطة في الاقتصاد"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_requisition_custom_setting
+msgid "Activate Budget check in purchase"
+msgstr "تفعيل التحقق من الميزانية في الشراء"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__activities
+msgid "Activities"
+msgstr "الأنشطة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__activity_description
+msgid "Activity Description"
+msgstr "وصف النشاط"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__cso_agreed
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__cso_agreed__agreed
+msgid "Agreed"
+msgstr "موافق"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Aligned with the scope of the draft national strategy"
+msgstr "التأكد مع نطاق الاستراتيجية "
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__alternative_offer_allowed
+msgid "Alternative Offer Allowed ?"
+msgstr "يسمح بالعرض البديل؟"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__applying_address
+msgid "Applying Address"
+msgstr "عنوان تقديم الضمان"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Approve"
+msgstr "إعتماد"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_order_governmental_form_view
+msgid "Are you sure you want to process ?"
+msgstr "هل أنت متأكد بهذا الاجراء؟"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__attachment_scope_project
+msgid "Attachment Scope Project"
+msgstr "نطاق عمل المشروع "
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__auto_notification
+msgid "Auto Notification"
+msgstr "اشعار آلي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_order__billed_amount
+msgid "Billed Amount"
+msgstr "المبلغ المفوتر"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__body_technical
+msgid "Body Technical"
+msgstr "اسم الجهة الفنية"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_requisition_custom_setting
+msgid "Booklet"
+msgstr "الكراسة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__ceo_purchase
+msgid "Manager OF Purchasing And Contract"
+msgstr "المدير التنفيذي للمشتريات والعقود"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Can't Confirm Request With No Item!"
+msgstr ""
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__cancel
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.convert_to_contract_po_wizard
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Cancel"
+msgstr "إلغاء"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__classify_des
+msgid "Classify"
+msgstr "توضيح"
+
+#. module: governmental_purchase
+#: model:ir.model,name:governmental_purchase.model_res_company
+msgid "Companies"
+msgstr "المؤسسات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__company_id
+msgid "Company"
+msgstr "المؤسسة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__cso_compatible
+msgid "Compatible"
+msgstr "موائم للنطاق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__cso_compatible__compatible
+msgid "Compatible with scope"
+msgstr "غير موائم للنطاق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__competion_description
+msgid "Competion Description"
+msgstr "وصف المنافسة"
+
+#. module: governmental_purchase
+#: model:ir.model,name:governmental_purchase.model_res_config_settings
+msgid "Config Settings"
+msgstr "ضبط الاعدادات"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_order_governmental_form_view
+msgid "Confirm Order"
+msgstr "تأكيد الأمر"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.convert_to_contract_po_wizard
+msgid "Contract Information"
+msgstr "معلومات العقد"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__contract_name
+msgid "Contract Name"
+msgstr "اسم العقد"
+
+#. module: governmental_purchase
+#: model:ir.model,name:governmental_purchase.model_convert_po_contract_wizard
+msgid "Convert Contract wizard"
+msgstr "معالج تحويل العقد"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.convert_to_contract_po_wizard
+msgid "Convert To Contract"
+msgstr "تحويل إلى عقد"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Create Date: "
+msgstr "تاريخ الإنشاء"
+
+#. module: governmental_purchase
+#: model_terms:ir.actions.act_window,help:governmental_purchase.purchase_type_contract_action
+msgid "Create New a Purchase Contract"
+msgstr "إنشاء عقد مشتريات جديد"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Create Purchase Order"
+msgstr "إنشاء أمر الشراء"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Create Requisition"
+msgstr "انشاء طلب شراء (عروض اسعار)"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__create_uid
+msgid "Created by"
+msgstr "أنشئ بواسطة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__create_date
+msgid "Created on"
+msgstr "أنشئ في"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__date_time
+msgid "Date and Time"
+msgstr "التاريخ والوقت"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__convert_po_contract_wizard__period_type__day
+msgid "Day(s)"
+msgstr "يوم(أيام)"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Delivery Info"
+msgstr "معلومات التسليم"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__Delivery_place
+msgid "Delivery_place"
+msgstr "مكان التسليم"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Deparments Use"
+msgstr "الإدارة الطالبة"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Deparments Use Base info"
+msgstr "المعلومات الأساسية للطلب"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__display_name
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_order__display_name
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__display_name
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_company__display_name
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_config_settings__display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__is_delivered
+msgid "Do samples need to delivered"
+msgstr "هل يتطلب تسليم عينات؟"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__document_cost
+msgid "Document cost"
+msgstr "قيمة الوثائق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__done
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Done"
+msgstr "تم"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__draft
+msgid "Draft"
+msgstr "مبدئي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__budget_approve
+msgid "Budget Approved"
+msgstr "إعتماد الإرتباط المبدئي"
+
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__end_date
+msgid "End Date"
+msgstr "تاريخ النهاية"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "First Budget Check"
+msgstr "ارسال للارتباط المبدئي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__delivery_floor
+msgid "Floor"
+msgstr "الطابق"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "For technical management use"
+msgstr "الادراة الفنية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__id
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_order__id
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__id
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_company__id
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_config_settings__id
+msgid "ID"
+msgstr "المُعرف"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__waiting
+msgid "Procurement Department"
+msgstr "إدارة المشتريات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__cso_compatible__incompatible
+msgid "Incompatible with scope "
+msgstr "غير موائم للنطاق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__initial_guarantee_percentage
+msgid "Initial Guarantee Percentage (%)"
+msgstr "نسبة الضمان الابتدائي (%)"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__initiative_end_date
+msgid "Initiative End Date"
+msgstr "تاريخ انتهاء المبادرة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__initiative_name
+msgid "Initiative Name"
+msgstr "اسم المبادرة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__Delivery_place__inside
+msgid "Inside Saudi Arabia"
+msgstr "داخل المملكة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__is_competition_divisible
+msgid "Is Competition Divisible?"
+msgstr "هل المنافسة قابلة للتجزئة؟"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard____last_update
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_order____last_update
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request____last_update
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_company____last_update
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_config_settings____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__write_uid
+msgid "Last Updated by"
+msgstr "آخر تحديث بواسطة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__write_date
+msgid "Last Updated on"
+msgstr "آخر تحديث في"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__list_documentaries
+msgid "List documentaries"
+msgstr "قائمة الوثائق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__convert_po_contract_wizard__period_type__month
+msgid "Month(s)"
+msgstr "شهر (شهور) "
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__is_delivered__no
+msgid "NO"
+msgstr "لا"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__alternative_offer_allowed__no
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__is_competition_divisible__no
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__pre_qualification__no
+msgid "No"
+msgstr "لا"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__cso_agreed__not_agreed
+msgid "Not Agreed"
+msgstr "غير موافق"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__notify_before
+msgid "Notify Before"
+msgstr "إشعار قبل"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.convert_to_contract_po_wizard
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_order_governmental_form_view
+msgid "Notify Before End"
+msgstr "إشعار قبل الانتهاء"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/wizard/convert_to_contract.py:0
+#, python-format
+msgid "Notify Before End Should Be Greater Than Zero"
+msgstr ""
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__other
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__strategic_objective__other
+msgid "Other"
+msgstr "اخرى"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__other_strategic_objective
+msgid "Other Strategic objective"
+msgstr "هدف استراتيجي آخر"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__other_details
+msgid "Other details"
+msgstr "تفاصيل أخرى"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__Delivery_place__out
+msgid "Out of Saudi Arabia"
+msgstr "خارج المملكة"
+
+#. module: governmental_purchase
+#: model:ir.actions.server,name:governmental_purchase.purchase_order_auto_notify_cron_job_ir_actions_server
+#: model:ir.cron,cron_name:governmental_purchase.purchase_order_auto_notify_cron_job
+#: model:ir.cron,name:governmental_purchase.purchase_order_auto_notify_cron_job
+msgid "PO Contract Auto Notification"
+msgstr "اشعار آلي للعقد"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_order_governmental_form_view
+msgid "PO To Contract"
+msgstr "تحويل امر الشراء الى عقد"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__period_type
+msgid "Period Type"
+msgstr "نوع الفترة"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Please Select department for employee"
+msgstr "الرجاء إختيار قسم للموظف"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__pre_qualification
+msgid "Pre-Qualification Linked ?"
+msgstr "مربوط بتأهيل مسبق؟"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Procurement use"
+msgstr "استخدام إدارة المشتريات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__program_action
+msgid "Program of action"
+msgstr "برنامج العمل"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__project_duration
+msgid "Project Duration"
+msgstr "مدة تنفيذ المشروع"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Project Location"
+msgstr "موقع المشروع"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__project_name
+msgid "Project Name"
+msgstr "اسم المشروع"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__purchase_id
+msgid "Purchase"
+msgstr "الشراء"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_requisition_custom_setting
+msgid "Purchase Booklet"
+msgstr "الكراسة الالكترونية"
+
+#. module: governmental_purchase
+#: model:ir.actions.act_window,name:governmental_purchase.purchase_type_contract_action
+#: model:ir.ui.menu,name:governmental_purchase.purchase_type_contract_menu
+msgid "Purchase Contracts"
+msgstr "عقود الشراء"
+
+#. module: governmental_purchase
+#: model:ir.model,name:governmental_purchase.model_purchase_order
+msgid "Purchase Order"
+msgstr "أوامر الشراء المؤكدة"
+
+#. module: governmental_purchase
+#: model:ir.model,name:governmental_purchase.model_purchase_request
+msgid "Purchase Request"
+msgstr "طلبات الشراء"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Purchase Request Approve"
+msgstr "اعتماد طلبات شراء الإدارات"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Purchase Request Confirmation By Direct Managr"
+msgstr "صلاحية طلبات الشراء لمدراء الادارات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__purpose_of_tender
+msgid "Purpose of Tender"
+msgstr "الغرض من المشروع"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_order_governmental_form_view
+msgid "Recommend"
+msgstr "العرض الموصي به"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__refuse
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Refuse"
+msgstr "رفض"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_order__remaining_amount
+msgid "Remaining Amount"
+msgstr "المتبقي للفوترة"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Requesting ِAdministration"
+msgstr "لإستخدام الإدارة الطالبة"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Reset To Draft"
+msgstr "ارجاع الى مبــدئي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__responsible_id
+msgid "Responsible"
+msgstr "المسؤول"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__samples_delivery_address
+msgid "Samples Address"
+msgstr "عنوان تسليم العينات"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.convert_to_contract_po_wizard
+msgid "Save"
+msgstr "حفظ"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Send"
+msgstr "إرسال"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__send_budget
+msgid "Send to Budget Confirmation"
+msgstr "إرسال للإرتباط المبدئي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__is_direct_manager
+msgid "Sent Technical Department"
+msgstr "إرسال للإدارة الفنية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_convert_po_contract_wizard__start_date
+msgid "Start Date"
+msgstr "تاريخ البداية"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/wizard/convert_to_contract.py:0
+#, python-format
+msgid "Start Date Should Be Less Than End Date"
+msgstr ""
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__state
+msgid "State"
+msgstr "الحالة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__strategic_objective
+msgid "Strategic Objective"
+msgstr "الهدف الاستراتيجي"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Strategy Management Use"
+msgstr "لإستخدام الاستراتجية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__sub_project
+msgid "Sub Project"
+msgstr "اسم المشروع الفرعي"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "Submit"
+msgstr "إعتماد"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__direct_manager
+msgid "Technical Department"
+msgstr "الإدارة الفنية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__tender_name
+msgid "Tender Name"
+msgstr "اسم المشروع"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__delivery_unit
+msgid "Unit"
+msgstr "الغرفة/الادارة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__attachment_booklet_uploade
+msgid "Upload Booklet"
+msgstr "رفع ملف الكراسة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,help:governmental_purchase.field_res_company__attachment_booklet_exp
+#: model:ir.model.fields,help:governmental_purchase.field_res_config_settings__attachment_booklet_exp
+msgid "Upload Booklet file"
+msgstr "إرفاق الكراسة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__vision_program_name
+msgid "Vision Program Name"
+msgstr "اسم برنامج الرؤية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__wait_budget
+msgid "Wait Budget"
+msgstr "في انتظار إدارة الميزانية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__convert_po_contract_wizard__period_type__week
+msgid "Week(s)"
+msgstr "أسبوع (أسابيع)"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__work_location_city
+msgid "Work Location City"
+msgstr "المدينة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__work_location_district
+msgid "Work Location District"
+msgstr "الحي"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__work_location_GPS
+msgid "Work Location GPS"
+msgstr "احداثيات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__work_location_state
+msgid "Work Location State"
+msgstr "المحافظة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__is_delivered__yes
+msgid "YES"
+msgstr "نعم"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__convert_po_contract_wizard__period_type__year
+msgid "Year(s)"
+msgstr "سنة (سنوات)"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__alternative_offer_allowed__yes
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__is_competition_divisible__yes
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__pre_qualification__yes
+msgid "Yes"
+msgstr "نعم"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_purchase_request__delivery_building
+msgid "building"
+msgstr "المبنى"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__dm
+msgid "Management Manager"
+msgstr "مدير الإدارة"
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.purchase_request_form
+msgid "download Booklet"
+msgstr "تنزيل الكراسة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_company__attachment_booklet_exp
+#: model:ir.model.fields,field_description:governmental_purchase.field_res_config_settings__attachment_booklet_exp
+msgid "file"
+msgstr "الملف"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "need your approve."
+msgstr ""
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "need your confirmation."
+msgstr ""
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__initiative
+msgid "Initiative"
+msgstr "المبادرة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__ksagreement_budget
+msgid "Korean Side Agreement Budget"
+msgstr "ميزانية اتفاقية الجانب الكوري"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__strategy
+msgid "National Strategy Budget"
+msgstr "ميزانية الاستراتجية الوطنية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__operational_budget
+msgid "Operational Budget"
+msgstr "الميزانية التشغلية للهيئة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__budget_scope__revenue_budget
+msgid "Revenue Budget"
+msgstr "ميزانية الايرادات"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_budget_confirmation__budget_scope
+msgid "Budget Scope"
+msgstr "نطاق الميزانية"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__permission__allowed
+msgid "Item Allows"
+msgstr "البند يسمح"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__budget_confirmation__permission__not_allowed
+msgid "Item Not Allows"
+msgstr "البند لايسمح"
+
+#. module: governmental_purchase
+#: model:ir.model.fields,field_description:governmental_purchase.field_budget_confirmation__permission
+msgid "Permission"
+msgstr "السماح"
+
+
+#. module: governmental_purchase
+#: model_terms:ir.ui.view,arch_db:governmental_purchase.inherit_view_budget_confirmation_form
+msgid "Budget Management"
+msgstr "انتظار الارسال"
+
+#. module: governmental_purchase
+#: model:res.groups,name:governmental_purchase.executive_director_of_purchase_and_contract
+msgid "Executive Director of Purchase and Contract"
+msgstr "المدير التنفيذي للخدمات المشتركة"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__general_supervisor
+#: model:res.groups,name:governmental_purchase.group_ceo_of_corporate_resources
+msgid "Chief Executive Officer"
+msgstr "الرئيس"
+
+#. module: governmental_purchase
+#: model:ir.model.fields.selection,name:governmental_purchase.selection__purchase_request__state__executive_vice
+#: model:res.groups,name:governmental_purchase.group_executive_vice_approve
+msgid "Executive Vice President"
+msgstr "نائب الرئيس التنفيذي"
+
+#. module: governmental_purchase
+#: model:ir.ui.menu,name:governmental_purchase.purchase_request_root_menu
+msgid "Employee Requests"
+msgstr "طلبات الإدارات"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Total Amount MUST be greater than 0 !!!"
+msgstr "المبلغ الإجمالي يجب أن يكون أكبر من الصفر"
+
+#. module: governmental_purchase
+#: code:addons/governmental_purchase/models/purchase_request.py:0
+#, python-format
+msgid "Please select an analytic account"
+msgstr "الرجاء إختيار حساب تحليلي"
\ No newline at end of file
diff --git a/odex25_purchase/governmental_purchase/models/__init__.py b/odex25_purchase/governmental_purchase/models/__init__.py
new file mode 100644
index 000000000..4c87bb0cc
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/__init__.py
@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+
+from . import purchase_order
+from . import purchase_request
+from . import res_company
+from . import budget_confirmation
+from . import account_budget
diff --git a/odex25_purchase/governmental_purchase/models/account_budget.py b/odex25_purchase/governmental_purchase/models/account_budget.py
new file mode 100644
index 000000000..857ae3a17
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/account_budget.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+from odoo import fields, models
+
+
+class CrossoveredBudgetLines(models.Model):
+ _inherit = "crossovered.budget.lines"
+ # Added new
+ reserve = fields.Float(string='Reserve Amount', tracking=True)
+ initial_reserve = fields.Float(string='Initial Reserve Amount', tracking=True)
+ confirm = fields.Float(string='Confirm Amount')
+ year_end = fields.Boolean(compute="get_year_end")
diff --git a/odex25_purchase/governmental_purchase/models/budget_confirmation.py b/odex25_purchase/governmental_purchase/models/budget_confirmation.py
new file mode 100644
index 000000000..744b6c168
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/budget_confirmation.py
@@ -0,0 +1,39 @@
+from odoo import fields, api ,models, _
+
+
+class BudgetConfirmationCustom(models.Model):
+ _inherit = 'budget.confirmation'
+
+ budget_scope = fields.Selection([
+ ('operational_budget', 'Operational Budget'),
+ ('initiative', 'Initiative'),
+ ('KSAgreement_budget', 'Korean Side Agreement Budget'),
+ ('revenue_budget', 'Revenue Budget'),
+ ('strategy','National Strategy Budget'),
+ ('other','Other')
+ ], string="Budget Scope")
+
+ permission = fields.Selection([
+ ('allowed', 'Item Allows'),
+ ('not_allowed', 'Item Not Allows'),
+ ], string="Permission")
+
+
+
+class BudgetConfirmationLineCustom(models.Model):
+ _inherit = 'budget.confirmation.line'
+ analytic_account_id = fields.Many2one(
+ comodel_name='account.analytic.account',
+ string='Cost Center',
+ required=False
+ )
+
+ @api.onchange('analytic_account_id')
+ def _onchange_analytic_account_id(self):
+ rec_remain = self.analytic_account_id.crossovered_budget_line.\
+ filtered(lambda x : x.date_from <= self.date and x.date_to >= self.date)
+ if rec_remain :
+ self.remain = rec_remain[0].remain
+
+
+
\ No newline at end of file
diff --git a/odex25_purchase/governmental_purchase/models/purchase_order.py b/odex25_purchase/governmental_purchase/models/purchase_order.py
new file mode 100644
index 000000000..97b14d1b6
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/purchase_order.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+from odoo.exceptions import ValidationError
+from odoo import api, fields, models, _
+from dateutil.relativedelta import relativedelta
+
+
+class PurchaseOrderCustom(models.Model):
+ _inherit = "purchase.order"
+
+
+ billed_amount = fields.Float(store=True, compute='_compute_amount')
+ remaining_amount = fields.Float(store=True, compute='_compute_amount')
+
+ @api.depends('invoice_ids','invoice_count')
+ def _compute_amount(self):
+ for order in self:
+ billed_amount = 0.0
+ for invoice in order.invoice_ids:
+ billed_amount += invoice.amount_total
+
+ currency = order.currency_id or order.partner_id.property_purchase_currency_id or \
+ self.env.company.currency_id
+ order.update({
+ 'billed_amount': currency.round(billed_amount),
+ 'remaining_amount': order.amount_total - billed_amount,
+ })
+
+
+ def action_recommend(self):
+ for order in self:
+ order.recommendation_order = True
+
+ def button_confirm(self):
+ super(PurchaseOrderCustom, self).button_confirm()
+ for order in self:
+ if order.state not in ['draft', 'sent', 'sign']:
+ continue
+ order._add_supplier_to_product()
+ # Deal with double validation process
+ if order._approval_allowed():
+ order.button_approve()
+ else:
+ order.write({'state': 'to approve'})
+ if order.partner_id not in order.message_partner_ids:
+ order.message_subscribe([order.partner_id.id])
+ return True
diff --git a/odex25_purchase/governmental_purchase/models/purchase_request.py b/odex25_purchase/governmental_purchase/models/purchase_request.py
new file mode 100644
index 000000000..f194aa634
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/purchase_request.py
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+from datetime import datetime
+from odoo import models, fields, api, _
+from odoo.exceptions import ValidationError
+from odoo.tools.misc import get_lang
+
+
+class PurchaseRequest(models.Model):
+ _inherit = 'purchase.request'
+
+ state = fields.Selection(
+ [('draft', 'Draft'),
+ ('dm', 'Management Manager'),
+ ('direct_manager', 'Technical Department'),
+ ('send_budget', 'Send to Budget Confirmation'),
+ ('wait_budget', 'Wait Budget'),
+ ('ceo_purchase', 'Manager OF Purchasing And Contract'),
+ ('executive_vice', 'Executive Vice President'),
+ ('general_supervisor', 'Chief Executive Officer'),
+ ('waiting', 'Procurement Department'),
+ ('done', 'Done'),
+ ('refuse', 'Refuse')], default="draft", tracking=True)
+ project_name = fields.Char('Project Name', copy=False)
+ sub_project = fields.Char('Sub Project', copy=False)
+ project_duration = fields.Char('Project Duration', copy=False)
+ strategic_objective = fields.Selection([
+ ('e_d_p', '3.1.1 Ease of doing business'),
+ ('a_f_d_i', '3.1.6 Attracting foreign direct investment'),
+ ('d_r_s', '3.3.5 Development of the retail sector'),
+ ('i_c_e', '4.3.2 Increasing SMEs contribution to the economy'),
+ ('other', 'Other')
+ ], string='Strategic Objective', copy=False)
+
+ other_strategic_objective = fields.Char('Other Strategic objective', copy=False)
+ vision_program_name = fields.Char('Vision Program Name', copy=False)
+ initiative_name = fields.Char('Initiative Name', copy=False)
+ initiative_end_date = fields.Date('Initiative End Date', copy=False)
+ is_direct_manager = fields.Boolean('Sent Technical Department', copy=False)
+ cso_agreed = fields.Selection([
+ ('agreed', 'Agreed'),
+ ('not_agreed', 'Not Agreed'),
+ ], string='Agreed', copy=False)
+ cso_compatible = fields.Selection([
+ ('compatible', 'Compatible with scope '),
+ ('Incompatible', 'Incompatible with scope '),
+ ], string='Compatible', copy=False)
+ company_id = fields.Many2one(string='Company', comodel_name='res.company',
+ default=lambda self: self.env.user.company_id)
+ attachment_booklet_uploade = fields.Binary(string="Upload Booklet", copy=False)
+ document_cost = fields.Char('Document cost', copy=False)
+ body_technical = fields.Char('Body Technical', copy=False)
+ pre_qualification = fields.Selection([
+ ('yes', 'Yes'),
+ ('no', 'No')
+ ], string='Pre-Qualification Linked ?', copy=False)
+ initial_guarantee_percentage = fields.Float(
+ 'Initial Guarantee Percentage (%)', copy=False)
+ applying_address = fields.Char('Applying Address', copy=False)
+ alternative_offer_allowed = fields.Selection([
+ ('yes', 'Yes'),
+ ('no', 'No')
+ ], string='Alternative Offer Allowed ?', copy=False)
+ is_competition_divisible = fields.Selection([
+ ('yes', 'Yes'),
+ ('no', 'No')
+ ], string='Is Competition Divisible?', copy=False)
+ classify_des = fields.Text('Classify', copy=False)
+
+ tender_name = fields.Char('Tender Name', copy=False)
+ purpose_of_tender = fields.Char('Purpose of Tender ', copy=False)
+ is_delivered = fields.Selection([
+ ('no', 'NO'),
+ ('yes', 'YES')
+ ], string='Do samples need to delivered', copy=False)
+
+ samples_delivery_address = fields.Char('Samples Address', copy=False)
+ delivery_building = fields.Char('building', copy=False)
+ delivery_floor = fields.Char('Floor', copy=False)
+ delivery_unit = fields.Char('Unit', copy=False)
+ date_time = fields.Datetime('Date and Time', copy=False)
+ Delivery_place = fields.Selection([
+ ('out', 'Out of Saudi Arabia'),
+ ('inside', 'Inside Saudi Arabia')
+ ], string='Delivery_place', copy=False)
+ other_details = fields.Text('Other details', copy=False)
+ # activities = fields.Many2many('activity.type', string='Activities', copy=False)
+ activity_description = fields.Text('Activity Description', copy=False)
+ competion_description = fields.Text('Competion Description', copy=False)
+ list_documentaries = fields.Text('List documentaries', copy=False)
+ attachment_scope_project = fields.Binary(string="Attachment Scope Project", copy=False)
+ program_action = fields.Char('Program of action', copy=False)
+ work_location_district = fields.Char('Work Location District', copy=False)
+ work_location_city = fields.Char('Work Location City', copy=False)
+ work_location_state = fields.Char('Work Location State', copy=False)
+ work_location_GPS = fields.Char('Work Location GPS', copy=False)
+ cancel_reason = fields.Char(string='Reason')
+ user_id = fields.Many2one(comodel_name='res.users',string='User id')
+
+
+ def action_dm_confirm(self):
+ if len(self.line_ids) == 0:
+ raise ValidationError(_("Can't Confirm Request With No Item!"))
+ if not self.department_id:
+ raise ValidationError(_("Please Select department for employee"))
+ for rec in self.line_ids:
+ if rec.request_id.is_analytic:
+ if not rec.account_id:
+ raise ValidationError(_("Please select an analytic account"))
+ if rec.sum_total <= 0:
+ raise ValidationError(_("Total Amount MUST be greater than 0 !!!"))
+
+ self.write({'state': 'dm'})
+
+
+ def approve_department(self):
+ self.write({'state': 'send_budget'})
+
+ def action_pc_confirm(self):
+ amount = 0
+ for rec in self.line_ids:
+ amount = amount + rec.sum_total
+ if amount >= self.company_id.direct_purchase:
+ self.write({'state': 'executive_vice'})
+ else:
+ self.write({'state': 'waiting'})
+
+ def approve_executive_vice(self):
+ amount = 0
+ for rec in self.line_ids:
+ amount = amount + rec.sum_total
+ if amount >= self.company_id.chief_executive_officer:
+ self.write({'state': 'general_supervisor'})
+ else:
+ self.write({'state': 'waiting'})
+
+ def action_general_supervisor_approve(self):
+ for request in self:
+ request.write({'state': 'waiting'})
+
+ def action_refuse(self):
+ self.write({'state': 'refuse'})
+
+ def download_url(self):
+ return {
+ "type": "ir.actions.act_url",
+ "url": '/web/content/res.company/%s/attachment_booklet_exp/الكراسة الالكترونية الموحدة.docx' % self.company_id.id,
+ "target": "new",
+ }
diff --git a/odex25_purchase/governmental_purchase/models/purchase_requisition.py b/odex25_purchase/governmental_purchase/models/purchase_requisition.py
new file mode 100644
index 000000000..0efbdc770
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/purchase_requisition.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields, api, _
+
+
+class PurchaseRequisition(models.Model):
+ _inherit = 'purchase.requisition'
+
+ agreement_name = fields.Char()
+ agreement_number = fields.Char()
+ agreement_date = fields.Date()
+ # oveeride purchase_cost field to set default value
+ purchase_cost = fields.Selection([('department', 'Department'), ('default', 'Default Cost Center'),('product_line', 'Product Line'), ('project', 'Project')],default='department',string='Purchase Cost')
+ # end
+ city = fields.Char()
diff --git a/odex25_purchase/governmental_purchase/models/res_company.py b/odex25_purchase/governmental_purchase/models/res_company.py
new file mode 100644
index 000000000..b9bdd6cf4
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/models/res_company.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class ResSetting(models.TransientModel):
+ _inherit = 'res.config.settings'
+
+ attachment_booklet_exp = fields.Binary(string='file', readonly=False, related="company_id.attachment_booklet_exp",
+ attachment=True, help='Upload Booklet file')
+
+
+class Company(models.Model):
+ _inherit = 'res.company'
+
+ attachment_booklet_exp = fields.Binary(
+ string='file', readonly=False, attachment=True, help='Upload Booklet file')
diff --git a/odex25_purchase/governmental_purchase/security/ir.model.access.csv b/odex25_purchase/governmental_purchase/security/ir.model.access.csv
new file mode 100644
index 000000000..aaa3083ab
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/security/ir.model.access.csv
@@ -0,0 +1,12 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_crossovered_budget_group_department_approve,crossovered.budget,odex25_account_budget.model_crossovered_budget,purchase_requisition_custom.group_department_approve,1,0,0,0
+access_account_budget_post_group_department_approve,model_account_budget_post,odex25_account_budget.model_account_budget_post,purchase_requisition_custom.group_department_approve,1,0,0,0
+access_budget_confirmation_group_department_approve,budget_confirmation,account_budget_custom.model_budget_confirmation,purchase_requisition_custom.group_department_approve,1,1,1,0
+access_budget_confirmation_line_group_department_approve,budget_confirmation_line,account_budget_custom.model_budget_confirmation_line,purchase_requisition_custom.group_department_approve,1,1,1,0
+
+access_crossovered_budget_group_purchase_user,crossovered.budget.group_purchase_user,odex25_account_budget.model_crossovered_budget,purchase.group_purchase_user,1,0,0,0
+access_account_budget_post_group_purchase_user,model_account_budget_post.group_purchase_user,odex25_account_budget.model_account_budget_post,purchase.group_purchase_user,1,0,0,0
+access_budget_confirmation_group_purchase_user,budget_confirmation.group_purchase_user,account_budget_custom.model_budget_confirmation,purchase.group_purchase_user,1,1,1,0
+access_budget_confirmation_line_group_purchase_user,budget_confirmation_line.group_purchase_user,account_budget_custom.model_budget_confirmation_line,purchase.group_purchase_user,1,1,1,0
+
+group_user_purchase_requisition_type,Requisition Type,purchase_requisition.model_purchase_requisition_type,base.group_user,1,1,0,0
\ No newline at end of file
diff --git a/odex25_purchase/governmental_purchase/security/security.xml b/odex25_purchase/governmental_purchase/security/security.xml
new file mode 100644
index 000000000..d1d476bb8
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/security/security.xml
@@ -0,0 +1,123 @@
+
+
+
+
+ Executive Director of Purchase and Contract
+
+
+
+
+
+ Chief Executive Officer
+
+
+
+
+
+ Executive Vice President
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Purchasing Specialist
+
+
+
+
+
+
+
+ Executive Director of Purchase and Contract Rule
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+ CEO of Corporate Resources Rule
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+ Executive Vice President of Corporate Resources Rule
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+
+ Budget User Rule
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+ Budget department Rule
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+ Manager Budget Manager
+
+
+ [(1, '=', 1)]
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/views/budget_confirmation_view.xml b/odex25_purchase/governmental_purchase/views/budget_confirmation_view.xml
new file mode 100644
index 000000000..bf855b0ae
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/views/budget_confirmation_view.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ budget.confirmation.form
+ budget.confirmation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/views/purchase_order_views.xml b/odex25_purchase/governmental_purchase/views/purchase_order_views.xml
new file mode 100644
index 000000000..87ae19227
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/views/purchase_order_views.xml
@@ -0,0 +1,109 @@
+
+
+
+ purchase.order.governmental.form.custom
+ purchase.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Purchase Contracts List
+ purchase.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Purchase Contracts
+ ir.actions.act_window
+ purchase.order
+ tree,kanban,form,pivot,graph,calendar
+ [('type' , '=' , 'contract'), ('state' , '=' , 'purchase')]
+ {
+ 'default_type': 'contract',
+ 'create': False,
+ 'edit': False,
+ 'delete': False,
+ 'duplicate': False,
+ 'tree_view_ref': 'purchase_requisition_custom.purchase_type_contract_tree',
+ }
+
+
+
+
+ Create New a Purchase Contract
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/views/purchase_request_views.xml b/odex25_purchase/governmental_purchase/views/purchase_request_views.xml
new file mode 100644
index 000000000..13dba6c12
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/views/purchase_request_views.xml
@@ -0,0 +1,201 @@
+
+
+
+ purchase.request.view.form
+ purchase.request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/views/purchase_requisition_views.xml b/odex25_purchase/governmental_purchase/views/purchase_requisition_views.xml
new file mode 100644
index 000000000..c2e2b170e
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/views/purchase_requisition_views.xml
@@ -0,0 +1,27 @@
+
+
+
+ purchase.governmental.requisition.form.inherit
+ purchase.requisition
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/governmental_purchase/views/res_setting.xml b/odex25_purchase/governmental_purchase/views/res_setting.xml
new file mode 100644
index 000000000..86f77336f
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/views/res_setting.xml
@@ -0,0 +1,31 @@
+
+
+ model.name.inherit.view.form
+ res.config.settings
+
+
+
+ Booklet
+
+
+
+
+
+
+ Purchase Booklet
+
+
+
+
+
+
+
+
+
+ -->
diff --git a/odex25_purchase/governmental_purchase/wizard/__init__.py b/odex25_purchase/governmental_purchase/wizard/__init__.py
new file mode 100644
index 000000000..9aaa226cd
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/wizard/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import convert_to_contract
diff --git a/odex25_purchase/governmental_purchase/wizard/convert_to_contract.py b/odex25_purchase/governmental_purchase/wizard/convert_to_contract.py
new file mode 100644
index 000000000..60e614583
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/wizard/convert_to_contract.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, fields, models, _
+from odoo.exceptions import ValidationError
+
+
+class ConvertPoContract(models.TransientModel):
+ _name = "convert.po.contract.wizard"
+ _description = "Convert Contract wizard"
+
+ purchase_id = fields.Many2one('purchase.order')
+ contract_name = fields.Char()
+ auto_notification = fields.Boolean()
+ responsible_id = fields.Many2one('res.users')
+ notify_before = fields.Integer()
+ start_date = fields.Date()
+ end_date = fields.Date()
+ period_type = fields.Selection(
+ selection=[('day', 'Day(s)'), ('week', 'Week(s)'), ('month', 'Month(s)'), ('year', 'Year(s)')])
+
+ @api.onchange('auto_notification')
+ def auto_notification_onchange(self):
+ if not self.auto_notification:
+ self.notify_before = 0
+ self.period_type = ''
+ return {}
+
+ @api.constrains('end_date', 'start_date', 'auto_notification')
+ def start_notify_constrain(self):
+ for rec in self:
+ if rec.start_date and rec.end_date:
+ if rec.start_date >= rec.end_date:
+ raise ValidationError(_("Start Date Should Be Less Than End Date"))
+
+ if rec.auto_notification and rec.notify_before < 1:
+ raise ValidationError(_("Notify Before End Should Be Greater Than Zero"))
+
+ def action_create_contract(self):
+ self.ensure_one()
+ self.purchase_id.write({
+ 'type': 'contract',
+ 'contract_name': self.contract_name,
+ 'auto_notification': self.auto_notification,
+ 'responsible_id': self.responsible_id.id,
+ 'notify_before': self.notify_before,
+ 'start_date': self.start_date,
+ 'end_date': self.end_date,
+ 'period_type': self.period_type
+ })
+ return {'type': 'ir.actions.act_window_close'}
diff --git a/odex25_purchase/governmental_purchase/wizard/convert_to_contract.xml b/odex25_purchase/governmental_purchase/wizard/convert_to_contract.xml
new file mode 100644
index 000000000..c317b0108
--- /dev/null
+++ b/odex25_purchase/governmental_purchase/wizard/convert_to_contract.xml
@@ -0,0 +1,31 @@
+
+
+
+ convert.po.contract.wizard.form
+ convert.po.contract.wizard
+
+
+
+
+
+
diff --git a/odex25_purchase/khwalid_vendor/__init__.py b/odex25_purchase/khwalid_vendor/__init__.py
new file mode 100644
index 000000000..9b4296142
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/__init__.py
@@ -0,0 +1,2 @@
+from . import models
+from . import wizard
diff --git a/odex25_purchase/khwalid_vendor/__manifest__.py b/odex25_purchase/khwalid_vendor/__manifest__.py
new file mode 100644
index 000000000..048372ecf
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/__manifest__.py
@@ -0,0 +1,21 @@
+{
+ 'name': "Khwalid Vendor",
+ 'version': '14.0.1.0.0',
+ 'summary': """Khwalid Vendor""",
+ 'category': 'Purchase',
+ 'author': "Expert Co Ltd",
+ 'website': "http://www.ex.com",
+ 'category': 'Odex25-Purchase/Odex25-Purchase',
+ 'company': 'Expert Co. Ltd.',
+ 'depends': ['base','mail','contacts'],
+
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'security/secuirty.xml',
+ 'data/res_partner_sequence.xml',
+ 'views/res_partner.xml',
+ 'wizard/messeage_wiz.xml',
+ ],
+ 'installable': True,
+ 'application': False,
+}
diff --git a/odex25_purchase/khwalid_vendor/data/res_partner_sequence.xml b/odex25_purchase/khwalid_vendor/data/res_partner_sequence.xml
new file mode 100644
index 000000000..2f3e0e54c
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/data/res_partner_sequence.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ Res Partner
+ res.partner
+ V/
+ 5
+
+
+
+
+
diff --git a/odex25_purchase/khwalid_vendor/i18n/ar_SY.po b/odex25_purchase/khwalid_vendor/i18n/ar_SY.po
new file mode 100644
index 000000000..e6291672d
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/i18n/ar_SY.po
@@ -0,0 +1,157 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * khwalid_vendor
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-01-10 22:28+0000\n"
+"PO-Revision-Date: 2022-01-10 22:28+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: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__cancel
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_info_wizard
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Cancel"
+msgstr "إلغاء"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_partner__cancel_reason
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_users__cancel_reason
+msgid "Cancel Reason"
+msgstr "سبب الإلغاء"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__ceo
+#: model:res.groups,name:khwalid_vendor.group_ceo
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Chief Executive Officer"
+msgstr "المدير التنفيذي"
+
+#. module: khwalid_vendor
+#: model:ir.model,name:khwalid_vendor.model_res_partner
+msgid "Contact"
+msgstr "جهة الاتصال"
+
+#. module: khwalid_vendor
+#: model:ir.module.category,name:khwalid_vendor.smart_module_management
+msgid "Contacts WorkFlow"
+msgstr "صلاحيات جهات الإتصال"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__display_name
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_partner__display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__draft
+msgid "Draft"
+msgstr "مسودة"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__financial_manager
+#: model:res.groups,name:khwalid_vendor.group_financial_manager
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Financial Manager"
+msgstr "المدير المالي"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__general_manager
+#: model:res.groups,name:khwalid_vendor.group_general_manager
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "General Manager"
+msgstr "المدير العام"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__id
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_partner__id
+msgid "ID"
+msgstr "المُعرف"
+
+#. module: khwalid_vendor
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_info_wizard
+msgid "Info"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard____last_update
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_partner____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_info_wizard
+msgid "OK"
+msgstr "تأكيد"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__partner_id
+msgid "Partner"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__project_manager
+#: model:res.groups,name:khwalid_vendor.group_project_manager
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Project Manager"
+msgstr "مدير المشاريع"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields.selection,name:khwalid_vendor.selection__res_partner__state__purchase_department
+#: model:res.groups,name:khwalid_vendor.group_purchase_department
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Purchase Department"
+msgstr "مسؤول ادارة المشتريات"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_partner_cancel_wizard__cancel_reason
+msgid "Reason"
+msgstr "السبب"
+
+#. module: khwalid_vendor
+#: model:ir.model,name:khwalid_vendor.model_partner_cancel_wizard
+msgid "Reason Wizard"
+msgstr ""
+
+#. module: khwalid_vendor
+#: model_terms:ir.ui.view,arch_db:khwalid_vendor.view_partner_form_inherited
+msgid "Rest To Draft"
+msgstr "إعادة إلي مسودة"
+
+#. module: khwalid_vendor
+#: model:ir.model.fields,field_description:khwalid_vendor.field_res_partner__state
+msgid "Status"
+msgstr "الحالة"
+
+#. module: khwalid_vendor
+#: model:ir.module.category,description:khwalid_vendor.smart_module_management
+msgid "User access level for this module"
+msgstr ""
diff --git a/odex25_purchase/khwalid_vendor/models/__init__.py b/odex25_purchase/khwalid_vendor/models/__init__.py
new file mode 100644
index 000000000..5a8df9837
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/models/__init__.py
@@ -0,0 +1 @@
+from . import res_parnter
diff --git a/odex25_purchase/khwalid_vendor/models/res_parnter.py b/odex25_purchase/khwalid_vendor/models/res_parnter.py
new file mode 100644
index 000000000..b5ed15363
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/models/res_parnter.py
@@ -0,0 +1,70 @@
+from odoo import fields, models, api, _
+from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
+
+
+class Partner(models.Model):
+ _inherit = 'res.partner'
+
+ parnter_referencen = fields.Char('Partner Reference', required=True, index=True, copy=False, default='New')
+ @api.model
+ def create(self, vals):
+ vals['parnter_referencen'] = self.env['ir.sequence'].next_by_code('res.partner') or '/'
+ return super(Partner, self).create(vals)
+
+ cancel_reason = fields.Text(
+ string='Cancel Reason',
+ )
+
+ name = fields.Char(index=True,tracking=True)
+
+ vat = fields.Char(string='Tax ID', index=True, help="The Tax Identification Number. Complete it if the contact is subjected to government taxes. Used in some legal statements.",tracking=True)
+
+ email = fields.Char(tracking=True)
+
+ phone = fields.Char(tracking=True)
+ mobile = fields.Char(tracking=True)
+
+ state = fields.Selection(
+ string='Status', required=True, readonly=True, copy=False,tracking=True,
+ selection=[
+ ('new', 'New'),
+ ('approved', 'Approved'),
+ ('refused', 'Refused')],
+ default='new',
+
+ )
+
+ def action_purchase_vendor_approve(self):
+ self.state = 'approved'
+
+ def action_purchase_vendor_refuse(self):
+ self.state = 'refused'
+
+ # def action_project_manager(self):
+ # self.state = 'project_manager'
+
+ # def action_financial_manager(self):
+ # self.state = 'financial_manager'
+
+ # def action_ceo(self):
+ # self.state = 'ceo'
+
+ # def action_general_manager(self):
+ # self.state = 'general_manager'
+
+ # def action_cancel(self):
+ # return {
+ # 'name': 'Cancel',
+ # 'type': 'ir.actions.act_window',
+ # 'res_model': 'partner.cancel.wizard',
+ # 'view_mode': 'form',
+ # 'view_type': 'form',
+ # 'target': 'new'
+
+ # }
+
+ # def action_rest_to_draft(self):
+ # self.state = 'draft'
+
+
+ #
\ No newline at end of file
diff --git a/odex25_purchase/khwalid_vendor/security/ir.model.access.csv b/odex25_purchase/khwalid_vendor/security/ir.model.access.csv
new file mode 100644
index 000000000..4287df5f5
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_partner_cancel_wizard,access_partner_cancel_wizard,model_partner_cancel_wizard,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/odex25_purchase/khwalid_vendor/security/secuirty.xml b/odex25_purchase/khwalid_vendor/security/secuirty.xml
new file mode 100644
index 000000000..d721a6ca7
--- /dev/null
+++ b/odex25_purchase/khwalid_vendor/security/secuirty.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Contacts WorkFlow
+ User access level for this module
+ 99
+
+
+
+
+ Vendor Approve
+
+
+
+
+ Refuse Vendor
+
+
+
+
+
+
+
diff --git a/odex25_purchase/khwalid_vendor/static/description/icon.png b/odex25_purchase/khwalid_vendor/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a48b24bdbae34b70cc487ba0e25a840709a420a7
GIT binary patch
literal 5467
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
CnV2R3
literal 0
HcmV?d00001
diff --git a/odex25_purchase/khwalid_vendor/static/fonts/ae_AlMohanad.ttf b/odex25_purchase/khwalid_vendor/static/fonts/ae_AlMohanad.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..bdd7360e10604b095f16008591e0567413dd029d
GIT binary patch
literal 120920
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