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 + + + + + + + + + + + + diff --git a/odex25_purchase/odex25_purchase_coc/views/views.xml b/odex25_purchase/odex25_purchase_coc/views/views.xml new file mode 100644 index 000000000..797470547 --- /dev/null +++ b/odex25_purchase/odex25_purchase_coc/views/views.xml @@ -0,0 +1,91 @@ + + + + + purchase.order.inherit.view.form + purchase.order + + + + + + + + + + + + + + + + purchase.coc.view.form + purchase.coc + +
+
+
+ + + + + + + + + + + + + + + + +
+
+
+ + + + model.name.view.tree + purchase.coc + + + + + + + + + + + + + + Certificate of Completion + ir.actions.act_window + purchase.coc + tree,form + +

+ Approve and Confirm CoC +

+
+
+ + + + + + + +
+
diff --git a/odex25_purchase/odex25_taqeem_purchase/__init__.py b/odex25_purchase/odex25_taqeem_purchase/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odex25_purchase/odex25_taqeem_purchase/__manifest__.py b/odex25_purchase/odex25_taqeem_purchase/__manifest__.py new file mode 100644 index 000000000..1dfd8d2e2 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Taqeem Purchase custom', + 'version': '1.1', + 'summary': 'Adding new Functionality on the Purchase Requests', + 'sequence': -1, + 'category':'Odex25-Purchase/Odex25-Purchase', + 'description': """ + Adding new Functionalities in Purchase Requests + """, + 'data': [ + 'security/ir.model.access.csv', + 'security/security.xml', + 'views/purchase_less_thirty_view.xml', + 'views/res_partner.xml', + 'views/direct_purchase.xml', + 'views/res_config_setting.xml', + 'views/res_company.xml', + 'views/competitive_purchase_attachment.xml', + 'views/competitve_purchase.xml', + 'views/account_analytic_account_views.xml', + ], + 'depends': ['purchase', 'governmental_purchase', 'purchase_requisition_custom'], + # 'account_budget_custom', exp_budget_check + 'installable': True, + 'application': True, +} diff --git a/odex25_purchase/odex25_taqeem_purchase/i18n/ar_001.po b/odex25_purchase/odex25_taqeem_purchase/i18n/ar_001.po new file mode 100644 index 000000000..30d05c688 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/i18n/ar_001.po @@ -0,0 +1,830 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex25_taqeem_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-24 13:40+0000\n" +"PO-Revision-Date: 2024-01-24 13:40+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_ids +msgid "Activities" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_state +msgid "Activity State" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__alternative_offer +msgid "Allow Alternative Offer" +msgstr "يسمح بالعرض البديل" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_account_analytic_account +msgid "Analytic Account" +msgstr "الحسابات التحليلية" + +#. module: odex25_taqeem_purchase +#: model:ir.actions.act_window,name:odex25_taqeem_purchase.action_competitive_purchase_attachment +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__attachment_scop +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__attach +#: model:ir.ui.menu,name:odex25_taqeem_purchase.menu_action_competitive_purchase_attachment +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.competitive_purchase_attachment_form_view +msgid "Application brochure" +msgstr "كراسة الطلب" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__name +msgid "Application brochure Name" +msgstr "اسم الكراسة" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Approve" +msgstr "إعتماد" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_budget_confirmation +msgid "Budget Confirmation" +msgstr "تعميد الموازنة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__send_budget +msgid "Budget Management" +msgstr "انتظار الارسال" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_account_analytic_account__item_executive_officer +msgid "Budget executive Officer" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__business_place +msgid "Business Place" +msgstr "مكان تنفيذ اﻷعمال" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Can't Confirm Request With No Item!" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__cancel +msgid "Cancel" +msgstr "إلغاء" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__check_chief_executive +msgid "Check Chief Executive" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__chief_executive_officer +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__dm +msgid "Chief Executive Officer" +msgstr "المدير التنفيذي للبند" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__general_supervisor +msgid "Chief Procurement Executive" +msgstr "الرئيس " + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__need_to_reparation__comming +msgid "Comming" +msgstr "لاحق" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_res_company +msgid "Companies" +msgstr "شركات" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__purchase_type__competitive +msgid "Competitive" +msgstr "تنافسي" + +#. module: odex25_taqeem_purchase +#: model:ir.actions.act_window,name:odex25_taqeem_purchase.action_purchase_request_competitive +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__competitive_purchase_id +msgid "Competitive Purchase" +msgstr "طلبات شراء المنافسات" + +#. module: odex25_taqeem_purchase +#: model:ir.ui.menu,name:odex25_taqeem_purchase.purchase_request_competitive_menu +msgid "Competitive Purchase Request" +msgstr "طلبات شراء المنافسات" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__competitive_type +msgid "Competitive Type" +msgstr "نوع المنافسة" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_res_config_settings +msgid "Config Settings" +msgstr "ضبط الاعدادات" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_res_partner +msgid "Contact" +msgstr "جهة الاتصال" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__create_uid +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__create_uid +msgid "Created by" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__create_date +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__create_date +msgid "Created on" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__day +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings__day +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__date_receive_offer__day +msgid "Day" +msgstr "يوم" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Days must be equal or greater than %s" +msgstr "عدد اﻷيام يجب أن تكون اكثر من " + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Delivered sample address" +msgstr "عنوان تسليم العينات" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Delivery Info" +msgstr "معلومات التسليم" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__delivery_samples +msgid "Delivery Samples" +msgstr "تسليم العينات" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__delivery_type +msgid "Delivery type" +msgstr "نوع التسليم" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__department_alter_offer +msgid "Department Alternative Offer" +msgstr "هل توصي اﻹدارة بقبول العروض البديلة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__dep_suggestion +msgid "Department Suggestion" +msgstr "رأي اﻹدارة" + +#. module: odex25_taqeem_purchase +#: model:ir.ui.menu,name:odex25_taqeem_purchase.purchase_request_direct_menu +msgid "Direct Purchase Request" +msgstr "طلبات الشراء المباشر" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_account_analytic_account__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_budget_confirmation__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request_line__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_company__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings__display_name +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_partner__display_name +msgid "Display Name" +msgstr "الاسم المعروض" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__document_list +msgid "Document List" +msgstr "قائمة الوثائق" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__done +msgid "Done" +msgstr "تم" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +msgid "Download" +msgstr "تنزيل" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +msgid "Download Application brochure" +msgstr "تنزيل كراسة الطلب" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__delivery_type__electronic +msgid "Electronic" +msgstr "إلكتروني" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__supplier_email +msgid "Email" +msgstr "الايميل" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__mech_evaluating_supp +msgid "Evaluating supplier mechanism" +msgstr "الية تقييم المورد المقترح" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__budget_approve +msgid "Executive Vice President of Corporate Resources" +msgstr "المدير التنفيذي للخدمات المشتركة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_account_analytic_account__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_budget_confirmation__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request_line__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_company__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings__id +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_partner__id +msgid "ID" +msgstr "المُعرف" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_needaction +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_unread +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_error +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__operational_construction +msgid "Item Operational Construction" +msgstr "هل البند ضمن الخطة التشغيلية" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_account_analytic_account____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_budget_confirmation____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request_line____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_company____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings____last_update +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_partner____last_update +msgid "Last Modified on" +msgstr "آخر تعديل في" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__write_uid +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__write_date +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__purchase_type__less_twenty +msgid "Less Than Twenty" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__purchase_type__less_thirty +msgid "Less than thirty" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__delivery_type__manual +msgid "Manual" +msgstr "يدوي" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__material_spec +msgid "Material Specification" +msgstr "مواصفات المواد" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_ids +msgid "Messages" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__month +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings__month +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__date_receive_offer__month +msgid "Month" +msgstr "شهر" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Months must be equal or greater than %s" +msgstr "الشهور يجب الا تكن اقل من" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__delivery_samples__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__material_spec__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__quality_spec__no +msgid "NO" +msgstr "لا ينطبق" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__need_to_reparation +msgid "Need Preparation" +msgstr "هل يحتاج إلى تأهيل" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__alternative_offer__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__department_alter_offer__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__operational_construction__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__sell_document__no +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__work_service_imp__no +msgid "No" +msgstr "لا" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__need_to_reparation__noy_need +msgid "Not need" +msgstr "لا يحتاج" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__material_notes +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__quality_notes +msgid "Note" +msgstr "توضيح" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__offer_requirements +msgid "Offer Requirements" +msgstr "متطلبات تنسيق العروض" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Order Base info" +msgstr "المعلومات اﻷساسية للطلب" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__wait_budget +msgid "Pending Budget Approve" +msgstr "في انتظار إدارة الميزانية" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__supplier_phone +msgid "Phone" +msgstr "الهاتف" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Please Select department for employee" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__need_to_reparation__previous +msgid "Previous" +msgstr "مسبق" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__waiting +msgid "Procurement Department" +msgstr "إدارة المشتريات" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__project_start_date +msgid "Project start date" +msgstr "تاريخ بداية المشروع" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__date_receive_offer +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.res_config_settings_view_form_purchase +msgid "Proposed Period Receiving Offer" +msgstr "المدة المقترحة ﻹستقبال العروض" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__purchase_ids +msgid "Purchase" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__purchase_line_ids +msgid "Purchase Line" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_purchase_request +msgid "Purchase Request" +msgstr "طلبات الشراء" + +#. module: odex25_taqeem_purchase +#: model:ir.ui.menu,name:odex25_taqeem_purchase.purchase_request_less_thirty_menu +msgid "Purchase Request Less Thirty" +msgstr "طلبات الشراء أقل من ثلاثين ألف" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__purchase_type +msgid "Purchase Type" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.actions.act_window,name:odex25_taqeem_purchase.action_purchase_request_less_thirty +msgid "Purchase less than thirty" +msgstr "طلبات الشراء أقل من ثلاثين ألف" + +#. module: odex25_taqeem_purchase +#: model:ir.actions.act_window,name:odex25_taqeem_purchase.action_purchase_request_direct +msgid "Purchase less than twenty" +msgstr "طلبات الشراء المباشر" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__record_licenses +msgid "Records and licenses" +msgstr "السجلات والتراخيص النظامية" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__refuse +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Refuse" +msgstr "رفض" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__remain_budget +msgid "Remain" +msgstr "المتبقي من الموازنة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request_line__remain +msgid "Remain Budget" +msgstr "المتبقي من الموازنة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__draft +msgid "Request Producer" +msgstr "مقدم الطلب" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_has_sms_error +msgid "SMS Delivery error" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__attachment_scope_project +msgid "Scope Project" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__selected_supplier_id +msgid "Selected Supplier" +msgstr "المورد المقترح" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__sell_document +msgid "Sell Documents" +msgstr "بيع الوثائق" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__special_condition +msgid "Special Condition" +msgstr "الشروط الخاصة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__state +msgid "State" +msgstr "الحالة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:res.groups,name:odex25_taqeem_purchase.strategy_project_group +msgid "Strategy And Project Group" +msgstr "إدارة اﻹستراتيجية والمشاريع" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +msgid "Strategy Project Department" +msgstr "إدارة اﻹستراتيجية والمشاريع" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__str_pro_department +msgid "Strategy Projects Departments" +msgstr "إدارة اﻹستراتيجية والمشاريع" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Submit" +msgstr "إرسال" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_thirty +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_less_twenty +msgid "Suggested Supplier" +msgstr "المورد المقترح" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_requests_line__supplier_id +msgid "Supplier" +msgstr "المورد" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__state__direct_manager +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +msgid "Technical Department" +msgstr "الإدارة الفنية" + +#. module: odex25_taqeem_purchase +#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.purchase_request_competitive +msgid "Technical Department Use" +msgstr "استخدام إدارة المشتريات" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "" +"There is not enough balance for account %s to sen purchase request,Please " +"contact to your executive director" +msgstr "لايوجد رصيد كافي لهذا الحساب التحليلي ﻹرسال طلب الشراء برجاء التواصل مع المدير التنفيذي للبند" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "" +"There is not enough balance to sen purchase request,Please contact to your " +"executive director" +msgstr "لايوجد رصيد كافي ﻹرسال طلب الشراء برجاء التواصل مع المدير التنفيذي للبند" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Total Amount Must be less than thirty thousand" +msgstr "يجب أن تكون القيمة اﻹجمالية أقل من ثلاثين ألف ريال" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Total Amount Must be less than two hundred thousand" +msgstr "يجب أن تكون القيمة اﻹجمالية أقل من مائتي ألف ريال" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__attachment_upload +msgid "Upload Application brochure" +msgstr "رفع كراسة الطلب" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_competitive_purchase_attachment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,help:odex25_taqeem_purchase.field_competitive_purchase_attachment__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__work_service_imp +msgid "Work service Implementation" +msgstr "كيفية تنفيذ الخدمات واﻷعمال" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__year +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_res_config_settings__year +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__date_receive_offer__year +msgid "Year" +msgstr "سنة" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "Years must be equal or greater than %s" +msgstr "عدد السنوات يجب الا يكون اقل من" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__alternative_offer__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__delivery_samples__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__department_alter_offer__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__material_spec__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__operational_construction__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__quality_spec__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__sell_document__yes +#: model:ir.model.fields.selection,name:odex25_taqeem_purchase.selection__purchase_request__work_service_imp__yes +msgid "Yes" +msgstr "نعم" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "You have to select at least Five supplier" +msgstr "يجب أن تختار خمس موردين على اﻷقل" + +#. module: odex25_taqeem_purchase +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#: code:addons/odex25_taqeem_purchase/models/purchase_request.py:0 +#, python-format +msgid "You have to select at least one supplier" +msgstr "يجب أن تختار مورد واحد على اﻷقل" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_competitive_purchase_attachment +msgid "competitive.purchase.attachment" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_account_analytic_account__department_id +msgid "department" +msgstr "القسم" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_purchase_request_line +msgid "purchase request line" +msgstr "بند طلب الشراء" + +#. module: odex25_taqeem_purchase +#: model:ir.model,name:odex25_taqeem_purchase.model_purchase_requests_line +msgid "purchase.requests.line" +msgstr "" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__quality_spec +msgid "quality Specification" +msgstr "مواصفات الجودة" + +#. module: odex25_taqeem_purchase +#: model:ir.model.fields,field_description:odex25_taqeem_purchase.field_purchase_request__room +msgid "room/department" +msgstr "الغرفة/اﻹدارة" diff --git a/odex25_purchase/odex25_taqeem_purchase/models/__init__.py b/odex25_purchase/odex25_taqeem_purchase/models/__init__.py new file mode 100644 index 000000000..563706c81 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/__init__.py @@ -0,0 +1,3 @@ +from . import purchase_request, budget_confirmation, res_partner, account_analytic_account, res_config_setting, \ + res_company +from . import competitive_purchase_attachment diff --git a/odex25_purchase/odex25_taqeem_purchase/models/account_analytic_account.py b/odex25_purchase/odex25_taqeem_purchase/models/account_analytic_account.py new file mode 100644 index 000000000..d9c2b4d26 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/account_analytic_account.py @@ -0,0 +1,8 @@ +from odoo import fields, models, _ + + +class AccountAnalyticAccount(models.Model): + _inherit = "account.analytic.account" + + item_executive_officer = fields.Many2one('hr.employee', string='Budget executive Officer') + department_id = fields.Many2one('hr.department', string='department') diff --git a/odex25_purchase/odex25_taqeem_purchase/models/budget_confirmation.py b/odex25_purchase/odex25_taqeem_purchase/models/budget_confirmation.py new file mode 100644 index 000000000..856562f98 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/budget_confirmation.py @@ -0,0 +1,10 @@ +from odoo import fields, models, _ + + +class BudgetConfirmationCustom(models.Model): + _inherit = 'budget.confirmation' + + def done(self): + super(BudgetConfirmationCustom, self).done() + if self.request_id and self.type == 'purchase.request': + self.request_id.write({'state': 'budget_approve'}) diff --git a/odex25_purchase/odex25_taqeem_purchase/models/competitive_purchase_attachment.py b/odex25_purchase/odex25_taqeem_purchase/models/competitive_purchase_attachment.py new file mode 100644 index 000000000..38c1e3713 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/competitive_purchase_attachment.py @@ -0,0 +1,12 @@ +from odoo import fields, models + + +class CompetitivePurchaseAttachment(models.Model): + _name = "competitive.purchase.attachment" + _inherit = ['mail.thread', 'mail.activity.mixin'] + _description = "competitive.purchase.attachment" + + purchase_ids = fields.One2many('purchase.request', 'competitive_purchase_id') + name = fields.Char(string='Application brochure Name') + attachment_scop = fields.Binary( + string='Application brochure', readonly=False, attachment=True, required=True) diff --git a/odex25_purchase/odex25_taqeem_purchase/models/purchase_request.py b/odex25_purchase/odex25_taqeem_purchase/models/purchase_request.py new file mode 100644 index 000000000..e24dbcb39 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/purchase_request.py @@ -0,0 +1,300 @@ +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError +from lxml import etree +import json +import base64 +import urllib.parse + + +class PurchaseRequest(models.Model): + _inherit = 'purchase.request' + project_start_date = fields.Date('Project start date') + check_chief_executive = fields.Boolean() + chief_executive_officer = fields.Many2one('res.users', compute='get_chief_executive_officer', store=True) + selected_supplier_id = fields.One2many('purchase.requests.line', 'purchase_line_ids') + material_spec = fields.Selection([('yes', 'Yes'), ('no', 'NO')], string='Material Specification') + quality_spec = fields.Selection([('yes', 'Yes'), ('no', 'NO')], string='quality Specification') + delivery_samples = fields.Selection([('yes', 'Yes'), ('no', 'NO')], string='Delivery Samples') + delivery_type = fields.Selection([('electronic', 'Electronic'), ('manual', 'Manual')], string='Delivery type') + # building = fields.Char('Building') + # floor = fields.Char('Floor') + room = fields.Char('room/department') + # date_time = fields.Datetime('Date&Time') + material_notes = fields.Char(string='Note') + quality_notes = fields.Char(string='Note') + business_place = fields.Char(string='Business Place') + special_condition = fields.Char(string='Special Condition') + attachment_scope_project = fields.Char(string="Scope Project", copy=False) + work_service_imp = fields.Selection([('yes', 'Yes'), ('no', 'No')], string='Work service Implementation') + alternative_offer = fields.Selection([('yes', 'Yes'), ('no', 'No')], string='Allow Alternative Offer') + # remain_budget = fields.Float(string='Remain', compute='get_remaining_budget', store=True) + date_receive_offer = fields.Selection([('day', 'Day'), ('month', 'Month'), ('year', 'Year')], + string='Proposed Period Receiving Offer') + day = fields.Integer(string='Day') + month = fields.Integer(string='Month') + year = fields.Integer(string='Year') + company_id = fields.Many2one('res.company', default=lambda self: self.env.user.company_id) + attachment_scop = fields.Binary(related="company_id.attachment_scop",string='Application brochure',) + + remain_budget = fields.Float(string='Remain', compute='get_remaining_budget', store=True) + + state = fields.Selection( + selection_add=[('draft', 'Request Producer'), + ('dm', 'Chief Executive Officer'), + ('str_pro_department', 'Strategy Projects Departments'), + ('direct_manager', 'Technical Department'), + ('send_budget', 'Budget Management'), + ('wait_budget', 'Pending Budget Approve'), + ('budget_approve', 'Executive Vice President of Corporate Resources'), + ('general_supervisor', 'Chief Procurement Executive'), + ('waiting', 'Procurement Department'), + ('done', 'Done'), + ('cancel', 'Cancel'), + ('refuse', 'Refuse')], default="draft", tracking=True) + purchase_type = fields.Selection( + [('less_thirty', 'Less than thirty'), ('less_twenty', 'Less Than Twenty'), ('competitive', 'Competitive')]) + department_alter_offer = fields.Selection([('yes', 'Yes'), ('no', 'No')], string='Department Alternative Offer') + document_list = fields.Char(string='Document List') + record_licenses = fields.Char(string='Records and licenses') + mech_evaluating_supp = fields.Char(string='Evaluating supplier mechanism') + attachment_upload = fields.Char(string='Upload Application brochure') + offer_requirements = fields.Char(string='Offer Requirements') + competitive_type = fields.Char(string='Competitive Type') + sell_document = fields.Selection([('yes', 'Yes'), ('no', 'No')], string='Sell Documents') + need_to_reparation = fields.Selection([('previous', 'Previous'), ('comming', 'Comming'), ('noy_need', 'Not need')], + string='Need Preparation') + operational_construction = fields.Selection([('yes', 'Yes'), ('no', 'No')], string='Item Operational Construction') + dep_suggestion = fields.Char(string='Department Suggestion') + + competitive_purchase_id = fields.Many2one('competitive.purchase.attachment') + attach = fields.Binary(related='competitive_purchase_id.attachment_scop', attachment=True) + + @api.model + def create(self, vals): + default_purchase_type = self.env.context.get('default_purchase_type') + if default_purchase_type == 'less_thirty': + vals['name'] =self.env['ir.sequence'].next_by_code('purchase.seq30.sequence') or '/' + com_attach = self.env['competitive.purchase.attachment'].search([]) + res = super(PurchaseRequest, self).create(vals) + res['competitive_purchase_id'] = com_attach + return res + elif default_purchase_type=='competitive': + print('com') + vals['name'] =self.env['ir.sequence'].next_by_code('purchase.com.sequence') or '/' + com_attach = self.env['competitive.purchase.attachment'].search([]) + res = super(PurchaseRequest, self).create(vals) + res['competitive_purchase_id'] = com_attach + return res + else: + res = super(PurchaseRequest, self).create(vals) + com_attach = self.env['competitive.purchase.attachment'].search([]) + res['competitive_purchase_id'] = com_attach + return res + + def download_url(self): + return { + "type": "ir.actions.act_url", + "url": '/web/content/competitive.purchase.attachment/%s/attachment_scop/attachment_scop.?download=true'% (self.competitive_purchase_id.id), + "target": "new", + } + + @api.constrains('date_receive_offer') + def check_date_receiving_offer(self): + config_settings = self.env['res.config.settings'].create( + {}) # Create an empty record print('config_day') + config_settings.execute() # Load the current configuration values + for rec in self: + if rec.date_receive_offer: + if rec.day < config_settings.day and rec.day: + raise ValidationError(_("Days must be equal or greater than %s" % config_settings.day)) + if rec.month < config_settings.month and rec.month: + raise ValidationError(_("Months must be equal or greater than %s" % config_settings.month)) + if rec.year < config_settings.year and rec.year: + raise ValidationError(_("Years must be equal or greater than %s" % config_settings.year)) + + def get_budget_line(self, product_account): + budget_account = self.env['account.budget.post'].search([]) + for budget in budget_account: + if budget.account_ids == product_account: + return budget + def action_confirm_button(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")) + self.write({'state': 'str_pro_department'}) + + + @api.depends('line_ids') + def get_remaining_budget(self): + for rec in self.line_ids: + if len(self) ==1: + if self.is_analytic: + # fix issue singlton + self.ensure_one() + purchase_account = rec.account_id + product_account = rec.product_id.property_account_expense_id + budget_name = self.get_budget_line(product_account) + budget_accounts = self.env['crossovered.budget'].search([]) + for account in budget_accounts.crossovered_budget_line: + if account.analytic_account_id == purchase_account and budget_name == account.general_budget_id: + rec.remain = account.remain + print(account.remain, 'account.remain') + elif self.department_id: + department_account = self.department_id.analytic_account_id + budget_accounts = self.env['crossovered.budget'].search([]) + for account in budget_accounts.crossovered_budget_line: + if account.analytic_account_id == department_account: + rec.remain = account.remain + + elif len(self) >1: + for y in self: + if y.is_analytic: + purchase_account = rec.account_id + product_account = rec.product_id.property_account_expense_id + budget_name = self.get_budget_line(product_account) + budget_accounts = self.env['crossovered.budget'].search([]) + for account in budget_accounts.crossovered_budget_line: + if account.analytic_account_id == purchase_account and budget_name == account.general_budget_id: + rec.remain = account.remain + print(account.remain, 'account.remain') + elif self.department_id: + department_account = self.department_id.analytic_account_id + budget_accounts = self.env['crossovered.budget'].search([]) + for account in budget_accounts.crossovered_budget_line: + if account.analytic_account_id == department_account: + rec.remain = account.remain + + @api.depends('line_ids', 'department_id') + def get_chief_executive_officer(self): + for record in self: + if record.is_analytic: + item_executive_officer = record.line_ids.account_id.item_executive_officer.user_id + record.chief_executive_officer = item_executive_officer + return item_executive_officer + else: + item_executive_officer = record.department_id.analytic_account_id.item_executive_officer.user_id + record.chief_executive_officer = item_executive_officer + return item_executive_officer + + def read(self, records): + res = super(PurchaseRequest, self).read(records) + if self.chief_executive_officer == self.env.user: + self.check_chief_executive = True + else: + self.check_chief_executive = False + return res + + @api.model + def fields_view_get(self, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + res = super(PurchaseRequest, self).fields_view_get(view_id, view_type, toolbar=toolbar, submenu=False) + doc = etree.XML(res['arch']) + for node in doc.xpath("//field[@name='name']"): + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = True + node.set("modifiers", json.dumps(modifiers)) + for node in doc.xpath("//field[@name='operational_construction']"): + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = [ + ('state', 'not in', ['str_pro_department'])] + for node in doc.xpath("//field[@name='partner_id']"): + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = [ + ('state', 'not in', ['waiting'])] + node.set("modifiers", json.dumps(modifiers)) + for node in doc.xpath("//field[@name='type_id']"): + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = [ + ('state', 'not in', ['waiting'])] + node.set("modifiers", json.dumps(modifiers)) + for node in doc.xpath("//field[@name='line_ids']"): + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = [('state', '!=', 'draft')] + node.set("modifiers", json.dumps(modifiers)) + res['arch'] = etree.tostring(doc, encoding='unicode') + return res + + def action_pc_confirm(self): + if self.purchase_type != 'less_thirty': + self.write({'state': 'general_supervisor'}) + else: + self.write({'state': 'waiting'}) + + def is_account_repeated(self, lines): + accounts = set() + for line in lines: + account = line.account_id + if account in accounts: + print(accounts, 'line') + return True + accounts.add(account) + print(accounts, 'accountsbjh') + return False + + def check_budget(self): + total = 0 + for line in self.line_ids: + total += line.sum_total + if not self.is_analytic: + print(total, 'check_budget') + print('Department Account') + if abs(line.remain) < total: + raise ValidationError( + _("There is not enough balance to sen purchase request," + "Please contact to your executive director")) + else: + if self.is_account_repeated(self.line_ids) == True: + if abs(line.remain) < total: + print('with repeated account') + raise ValidationError( + _("There is not enough balance to sen purchase request," + "Please contact to your executive director")) + else: + if abs(line.remain) < line.sum_total: + print('no repeated accounts') + raise ValidationError( + _("There is not enough balance for account %s to sen purchase request," + "Please contact to your executive director") % line.account_id.name) + + def action_dm_confirm(self): + res = super(PurchaseRequest, self).action_dm_confirm() + self.check_budget() + if self.purchase_type == 'less_twenty': + if not self.selected_supplier_id: + raise ValidationError(_("You have to select at least one supplier")) + elif self.purchase_type == 'less_thirty': + if not self.selected_supplier_id: + raise ValidationError(_("You have to select at least one supplier")) + elif self.purchase_type == 'competitive': + line_len = 0 + for line in self.selected_supplier_id: + line_len += 1 + if line_len < 5: + raise ValidationError(_("You have to select at least Five supplier")) + return res + + def technical_department(self): + self.write({'state': 'direct_manager'}) + + @api.constrains('line_ids') + def check_amount_total(self): + for line in self.line_ids: + if self.purchase_type == 'less_thirty' and line.sum_total > 30000: + raise ValidationError(_("Total Amount Must be less than thirty thousand")) + elif self.purchase_type == 'less_twenty' and line.sum_total > 200000: + raise ValidationError(_("Total Amount Must be less than two hundred thousand")) + + +class PurchaseRequestLine(models.Model): + _inherit = 'purchase.request.line' + + remain = fields.Float(string='Remain Budget') + + +class PurchaseRequestsLine(models.Model): + _name = 'purchase.requests.line' + + purchase_line_ids = fields.Many2one('purchase.request') + supplier_id = fields.Many2one('res.partner', string='Supplier') + supplier_email = fields.Char(string='Email', related='supplier_id.email') + supplier_phone = fields.Char(string='Phone', related='supplier_id.phone') diff --git a/odex25_purchase/odex25_taqeem_purchase/models/res_company.py b/odex25_purchase/odex25_taqeem_purchase/models/res_company.py new file mode 100644 index 000000000..e825ef314 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/res_company.py @@ -0,0 +1,15 @@ +from odoo import fields, models, api + + +class Company(models.Model): + _inherit = 'res.company' + + attachment_scop = fields.Binary(string='Application brochure',) + day = fields.Integer(string='Day') + month = fields.Integer(string='Month') + year = fields.Integer(string='Year') + # @api.onchange('name') + # def get_attachment(self): + # attach = self.env['competitive.purchase.attachment'] + # print(attach.attachment_scop, 'attachment_scop') + # self.attachment_scop = attach.attachment_scop diff --git a/odex25_purchase/odex25_taqeem_purchase/models/res_config_setting.py b/odex25_purchase/odex25_taqeem_purchase/models/res_config_setting.py new file mode 100644 index 000000000..764e37393 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/res_config_setting.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +import base64 +import ast + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError +from ast import literal_eval + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + attachment_scop = fields.Binary(related="company_id.attachment_scop",string='Application brochure',readonly=False) + day = fields.Integer( + string='Day', related="company_id.day", readonly=False) + month = fields.Integer( + string='Month', related="company_id.month", readonly=False) + year = fields.Integer( + string='Year', related="company_id.year", readonly=False) + + # @api.model + # def get_values(self): + # res = super(ResConfigSettings, self).get_values() + # res['day'] = int( + # self.env['ir.config_parameter'].sudo().get_param('odex25_taqeem_purchase.day', default=14)) + # res['month'] = int( + # self.env['ir.config_parameter'].sudo().get_param('odex25_taqeem_purchase.month', default=0)) + # res['year'] = int( + # self.env['ir.config_parameter'].sudo().get_param('odex25_taqeem_purchase.year', default=0)) + # # res['attachment_scop'] = self.env['ir.config_parameter'].sudo().get_param('odex25_taqeem_purchase.attachment_scop', default=0) + + # return res + + # @api.model + # def set_values(self): + # self.env['ir.config_parameter'].sudo().set_param('odex25_taqeem_purchase.day', self.day) + # self.env['ir.config_parameter'].sudo().set_param('odex25_taqeem_purchase.month', self.month) + # self.env['ir.config_parameter'].sudo().set_param('odex25_taqeem_purchase.year', self.year) + # self.env['ir.config_parameter'].sudo().set_param('odex25_taqeem_purchase.attachment_scop', self.attachment_scop) + + # super(ResConfigSettings, self).set_values() diff --git a/odex25_purchase/odex25_taqeem_purchase/models/res_partner.py b/odex25_purchase/odex25_taqeem_purchase/models/res_partner.py new file mode 100644 index 000000000..a92f593b9 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/models/res_partner.py @@ -0,0 +1,30 @@ +from odoo.exceptions import UserError, ValidationError +from odoo import api, fields, models, _ + + +class ResPartner(models.Model): + _inherit = 'res.partner' + # purchase_request_id = fields.Many2one('purchase.request') + + @api.constrains('vat', 'company_type', 'commercial_register') + def _check_unique_tax_id_commercial_register(self): + for record in self: + if record.vat: + domain = [('vat', '=', record.vat), ('company_type', '=', 'company'), ] + existing_records = self.env['res.partner'].search_count(domain) + if existing_records > 1: + raise ValidationError("Tax ID must be unique per company") + if record.commercial_register: + domain = [('commercial_register', '=', record.commercial_register), ('company_type', '=', 'company'), ] + existing_records = self.env['res.partner'].search_count(domain) + if existing_records > 1: + raise ValidationError("Commercial Register must be unique per company") + + @api.constrains('id_number', 'company_type') + def _check_unique_id_number(self): + for record in self: + if record.id_number: + domain = [('id_number', '=', record.id_number), ('company_type', '=', 'person')] + existing_records = self.env['res.partner'].search_count(domain) + if existing_records > 1: + raise ValidationError("Identity Number must be unique") diff --git a/odex25_purchase/odex25_taqeem_purchase/security/ir.model.access.csv b/odex25_purchase/odex25_taqeem_purchase/security/ir.model.access.csv new file mode 100644 index 000000000..d01a2076e --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/security/ir.model.access.csv @@ -0,0 +1,9 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink + +access_purchase_requests_line,odex25_taqeem_purchase.purchase_requests_line,model_purchase_requests_line,base.group_user,1,1,1,1 +access_competitive_purchase_attachment,odex25_taqeem_purchase.competitive_purchase_attachment,model_competitive_purchase_attachment,base.group_user,1,1,1,1 + + + + + diff --git a/odex25_purchase/odex25_taqeem_purchase/security/security.xml b/odex25_purchase/odex25_taqeem_purchase/security/security.xml new file mode 100644 index 000000000..e2428622b --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/security/security.xml @@ -0,0 +1,29 @@ + + + Strategy And Project Group + + + + + + Budget Executive Officer + + + + Executive Vice President of Corporate Resources + + + Chief Procurement Executive + + + + Group Direct Manger Rule + + ['|',('user_id','=',user.id),('chief_executive_officer', '=', user.id)] + + + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_taqeem_purchase/views/account_analytic_account_views.xml b/odex25_purchase/odex25_taqeem_purchase/views/account_analytic_account_views.xml new file mode 100644 index 000000000..73a39a73d --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/views/account_analytic_account_views.xml @@ -0,0 +1,14 @@ + + + account.analytic.account.form.view + account.analytic.account + + + + + + + + + + \ No newline at end of file diff --git a/odex25_purchase/odex25_taqeem_purchase/views/competitive_purchase_attachment.xml b/odex25_purchase/odex25_taqeem_purchase/views/competitive_purchase_attachment.xml new file mode 100644 index 000000000..1309be2d3 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/views/competitive_purchase_attachment.xml @@ -0,0 +1,39 @@ + + + competitive.purchase.attachment.form.view + competitive.purchase.attachment + +
+ + + + + +
+ + + +
+
+
+
+ + competitive.purchase.attachment.tree.view + competitive.purchase.attachment + + + + + + + + + Application brochure + competitive.purchase.attachment + tree,form + + + /> + +
diff --git a/odex25_purchase/odex25_taqeem_purchase/views/competitve_purchase.xml b/odex25_purchase/odex25_taqeem_purchase/views/competitve_purchase.xml new file mode 100644 index 000000000..9784d2c49 --- /dev/null +++ b/odex25_purchase/odex25_taqeem_purchase/views/competitve_purchase.xml @@ -0,0 +1,187 @@ + + + purchase.request.competitive + purchase.request + + primary + + + {'readonly':[('state', '!=','draft')]} + + + {'readonly':[('state', '!=','draft')]} + + + {'readonly':[('state', '!=','draft')]} + + + {'readonly':[('state', '!=',('draft','waiting'))]} + + + + + + + + + + + + + diff --git a/odex25_purchase/vendor_evaluation/views/account_invoice_view.xml b/odex25_purchase/vendor_evaluation/views/account_invoice_view.xml new file mode 100644 index 000000000..f506f3fbe --- /dev/null +++ b/odex25_purchase/vendor_evaluation/views/account_invoice_view.xml @@ -0,0 +1,20 @@ + + + + + account.move.inherit.view.form + account.move + + + +