From cddda602f74936825df50c6a0336e6512715ce19 Mon Sep 17 00:00:00 2001 From: esam Date: Tue, 23 Sep 2025 22:45:08 -0400 Subject: [PATCH] custom_report --- odex30_base/custom_report_layout/__init__.py | 3 ++ .../custom_report_layout/__manifest__.py | 21 +++++++++++++ .../custom_report_layout/models/__init__.py | 3 ++ .../custom_report_layout/models/models.py | 15 ++++++++++ .../report/base_document_layout.xml | 20 +++++++++++++ .../static/description/header_footer.png | Bin 0 -> 18006 bytes .../custom_report_layout/views/views.xml | 28 ++++++++++++++++++ 7 files changed, 90 insertions(+) create mode 100644 odex30_base/custom_report_layout/__init__.py create mode 100644 odex30_base/custom_report_layout/__manifest__.py create mode 100644 odex30_base/custom_report_layout/models/__init__.py create mode 100644 odex30_base/custom_report_layout/models/models.py create mode 100644 odex30_base/custom_report_layout/report/base_document_layout.xml create mode 100644 odex30_base/custom_report_layout/static/description/header_footer.png create mode 100644 odex30_base/custom_report_layout/views/views.xml diff --git a/odex30_base/custom_report_layout/__init__.py b/odex30_base/custom_report_layout/__init__.py new file mode 100644 index 0000000..5305644 --- /dev/null +++ b/odex30_base/custom_report_layout/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models \ No newline at end of file diff --git a/odex30_base/custom_report_layout/__manifest__.py b/odex30_base/custom_report_layout/__manifest__.py new file mode 100644 index 0000000..b2dd550 --- /dev/null +++ b/odex30_base/custom_report_layout/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Custom Report Layout", + 'version': '18.0.1.0.0', # تم تحديث النسخة لأودو 18 + 'summary': 'A module to configure report header and footer', + 'sequence': -100, + 'description': 'A module to configure report header and footer manually from company form', + 'author': "Ismail Mohamedi", + 'website': "https://www.linkedin.com/in/ismail-mohamedi-605537179", + 'category': 'Odex25-base', + 'license': 'LGPL-3', + 'depends': ['base'], # تأكد وجود الحزم المطلوبة لأودو 18 + 'data': [ + 'report/base_document_layout.xml', + 'views/views.xml', + ], + 'images': ['static/description/header_footer.png'], + 'installable': True, + 'application': True, + 'auto_install': False, +} diff --git a/odex30_base/custom_report_layout/models/__init__.py b/odex30_base/custom_report_layout/models/__init__.py new file mode 100644 index 0000000..5305644 --- /dev/null +++ b/odex30_base/custom_report_layout/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models \ No newline at end of file diff --git a/odex30_base/custom_report_layout/models/models.py b/odex30_base/custom_report_layout/models/models.py new file mode 100644 index 0000000..707094a --- /dev/null +++ b/odex30_base/custom_report_layout/models/models.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ + + +class ResCompany(models.Model): + """""" + _inherit = "res.company" + + header = fields.Image("Header") + footer = fields.Image("Footer") + header_width = fields.Char("Header Width", default="1000") + header_height = fields.Char("Header height", default="150") + footer_width = fields.Char("Footer Width", default="1000") + footer_height = fields.Char("Footer height", default="100") \ No newline at end of file diff --git a/odex30_base/custom_report_layout/report/base_document_layout.xml b/odex30_base/custom_report_layout/report/base_document_layout.xml new file mode 100644 index 0000000..4fe8cf1 --- /dev/null +++ b/odex30_base/custom_report_layout/report/base_document_layout.xml @@ -0,0 +1,20 @@ + + + + diff --git a/odex30_base/custom_report_layout/static/description/header_footer.png b/odex30_base/custom_report_layout/static/description/header_footer.png new file mode 100644 index 0000000000000000000000000000000000000000..76937de0a9550ac2cfc5a89c6ae73d5a04e849de GIT binary patch literal 18006 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 Hu0mjfeq%4u literal 0 HcmV?d00001 diff --git a/odex30_base/custom_report_layout/views/views.xml b/odex30_base/custom_report_layout/views/views.xml new file mode 100644 index 0000000..2b9c748 --- /dev/null +++ b/odex30_base/custom_report_layout/views/views.xml @@ -0,0 +1,28 @@ + + + + res.company.form.layout.inherit + res.company + + + + +
+ + + , + +
+
+ + + , + +
+
+
+
+
+