| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 699 |
| Technical Name |
eh_hijri_date |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 699 |
| Technical Name |
eh_hijri_date |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 17.0 18.0 19.0 |
Hijri Date Everywhere
The official Umm al-Qura Hijri date alongside every Gregorian date and datetime field in Odoo. Native look, native widgets, zero replacement. Per-user mode, bilingual UX, ZATCA-ready.
التاريخ الهجري الرسمي (أم القرى) بجانب كل تاريخ ميلادي في حقول أودو. مظهر أصلي، عناصر الواجهة الأصلية، بدون استبدال. وضع خاص لكل مستخدم، واجهة ثنائية اللغة، جاهز لزاتكا.
Why this exists . لماذا هذا التطبيق
The Gregorian-only problem
Saudi Arabia, the GCC, and a large share of MENA businesses run their day-to-day operations on the Hijri (Umm al-Qura) calendar. Government filings, ZATCA submissions, bank statements, leases, payroll cycles, public-sector procurement, and HR documents are dated in Hijri.
Stock Odoo, Community and Enterprise, has no Hijri support anywhere. Every date field is Gregorian-only. Users keep a Hijri converter open in a second browser tab. Mistakes propagate into invoices, payroll runs, and tax returns. ZATCA rejects filings whose dates do not match the cited Hijri reference.
This module fixes that without changing how Odoo looks or works. The native DatePicker keeps every keyboard shortcut, every range selection, every drag-to-select behaviour. The Hijri date appears beside, above, or as a tooltip on every existing field.
مشكلة التاريخ الميلادي فقط
المملكة العربية السعودية ودول الخليج وجزء كبير من الشرق الأوسط يعتمدون التقويم الهجري (أم القرى) في عملياتهم اليومية. الإقرارات الحكومية، تقارير زاتكا، كشوف البنوك، العقود، دورات الرواتب، المشتريات الحكومية، والملفات الإدارية كلها بالتاريخ الهجري.
أودو الأصلي، إصدار المجتمع والمؤسسات، لا يدعم التاريخ الهجري إطلاقاً. كل حقل تاريخ بالميلادي فقط. المستخدمون يفتحون محولاً هجرياً في تبويب آخر. الأخطاء تنتقل للفواتير ورواتب الموظفين والإقرارات الضريبية. زاتكا ترفض الإقرارات التي لا تطابق المرجع الهجري.
هذا التطبيق يحل المشكلة دون تغيير شكل أودو أو طريقة عمله. منتقي التاريخ الأصلي يحتفظ بكل اختصاراته ومجموعاته. التاريخ الهجري يظهر بجانب أو فوق أو كتلميح على كل حقل تاريخ موجود.
What you get . ما تحصل عليه
Nine concrete capabilities. Each one is in version 1, not roadmap.
تسع ميزات محددة. كلها في الإصدار الأول، ليست خطط مستقبلية.
Umm al-Qura, the official one
The canonical KSA government calendar. Same table used by ZATCA, the Saudi Central Bank, and government portals. Years 1300 to 1500 AH.
تقويم أم القرى الرسمي. نفس الجدول المستخدم في زاتكا والبنك المركزي السعودي والبوابات الحكومية. السنوات ١٣٠٠ إلى ١٥٠٠ هـ.
Native widget, augmented
The stock OWL DatePicker is patched once, not replaced. Every keyboard shortcut, range drag, and animation behaves exactly as before.
منتقي التاريخ الأصلي معدل مرة واحدة، ليس مستبدل. كل اختصارات الكيبورد والسحب والحركة تعمل تماماً كما هي.
Four display modes
Off, Beside, Primary, Tooltip. Set on each user's preferences page; falls back to the company-wide default.
إيقاف، بجانب، رئيسي، تلميح. يضبط في صفحة تفضيلات كل مستخدم، مع رجوع للإعداد العام للشركة.
Type Hijri or Gregorian
In Primary mode, the input accepts either format. Auto-detected, normalised, and stored as the Gregorian date Odoo expects in the database.
في الوضع الرئيسي، يقبل الحقل أي صيغة. يكتشف تلقائياً ويحول ويخزن كتاريخ ميلادي كما يتوقع أودو في قاعدة البيانات.
QWeb helper for PDFs
Add Hijri inline to any invoice, statement, payroll slip, or PDF report. A single QWeb directive: t-esc-hijri.
إضافة الهجري داخل أي فاتورة أو كشف أو قسيمة راتب أو تقرير PDF. توجيه QWeb واحد فقط.
Python parity with JavaScript
Identical Umm al-Qura table on both sides. A Gregorian-to-Hijri-to-Gregorian round trip on the server returns the same date the client renders.
نفس جدول أم القرى على الخادم والمتصفح. التحويل ذهاباً وإياباً يعطي نفس النتيجة في الطرفين.
Zero external dependencies
No internet call, no pip package beyond stock Odoo, no Hijri API. Works in air-gapped, on-premise, and disconnected environments.
لا اتصال إنترنت، لا حزم إضافية، لا واجهة برمجية خارجية. يعمل في البيئات المعزولة والداخلية.
Tabular Hijri for any year
For dates outside the Umm al-Qura coverage window, the algorithmic Tabular Hijri calendar takes over. No blanks, no crashes, predictable behaviour for historical and projected data.
للتواريخ خارج نطاق أم القرى، يتولى التقويم الهجري الجدولي بالحساب. لا فراغات، لا أعطال، سلوك متوقع للبيانات التاريخية والمستقبلية.
Arabic + English UX
Settings, help text, month names, weekday labels, and field labels in both Arabic and English. Tajawal for Arabic typography, DM Sans for Latin.
الإعدادات، نصوص المساعدة، أسماء الشهور والأيام، وأسماء الحقول بالعربية والإنجليزية. خط طجوال للعربية، DM Sans للإنجليزية.
Four display modes . أربعة أوضاع عرض
Per user, with a company-wide default. Adoption rolls out one user at a time.
لكل مستخدم على حدة، مع إعداد افتراضي على مستوى الشركة. التبني يتم بشكل تدريجي.
Off
Module installed but inert for this user. Use when only some staff need Hijri.
إيقاف: التطبيق مثبت لكن معطل لهذا المستخدم. مفيد عندما يحتاج بعض الموظفين فقط للهجري.
Beside
Gregorian remains the main value. A small grey Hijri label sits underneath each field.
بجانب: الميلادي رئيسي مع هجري صغير رمادي تحت كل حقل.
Primary
Hijri becomes the main displayed value. Gregorian sits underneath in grey. The input accepts either format.
رئيسي: الهجري هو القيمة الرئيسية، والميلادي رمادي تحته. الحقل يقبل أي صيغة.
Tooltip
Native field unchanged. A small icon shows the Hijri date on hover. Lightest visual footprint.
تلميح: الحقل الأصلي بدون تغيير. أيقونة صغيرة تظهر الهجري عند التمرير. أقل أثر بصري.
A day with Hijri Everywhere . يوم مع التطبيق
Five clicks across a typical Saudi accounting workflow. No tab-switching to an external converter.
خمس نقرات في يوم محاسبي سعودي عادي. بدون فتح محولات خارجية في تبويبات أخرى.
Open a customer invoice. The invoice date shows 1447/03/15 beside 2025/09/08.
افتح فاتورة عميل. تاريخ الفاتورة يعرض ١٥/٠٣/١٤٤٧ بجانب ٢٠٢٥/٠٩/٠٨.
Edit due date. Click the picker. Calendar shows month name Rabi al-Awwal 1447 alongside September 2025.
عدل تاريخ الاستحقاق. انقر منتقي التاريخ. الشهر يظهر "ربيع الأول ١٤٤٧" بجانب سبتمبر ٢٠٢٥.
Type Hijri directly. Field in Primary mode accepts 1447-03-20; auto-converted at save.
اكتب الهجري مباشرة. الحقل في الوضع الرئيسي يقبل ١٤٤٧-٠٣-٢٠ ويحول عند الحفظ.
Print invoice PDF. The QWeb template renders Hijri inline next to every Gregorian date.
اطبع PDF الفاتورة. قالب QWeb يطبع الهجري بجانب كل تاريخ ميلادي.
Open monthly statement. Date column carries Hijri dates that match the cited filing reference. ZATCA-aligned.
افتح كشف الحساب الشهري. عمود التاريخ بالهجري المطابق للمرجع المرفوع لزاتكا.
Engineering principles . مبادئ الهندسة
Built to survive upgrades, audits, and skeptical CTOs.
مصمم ليصمد أمام الترقيات والتدقيقات والمدراء التقنيين المتشككين.
One patch, not a replacement
The stock OWL DatePicker keeps every feature. We add a template inherit and a behaviour patch, not a new widget. Upgrades to Odoo do not break this module unless the DatePicker itself is rewritten.
تعديل واحد، ليس استبدالاً. منتقي التاريخ الأصلي يحتفظ بكل ميزاته. نضيف توريث للقالب وتعديل سلوك، وليس عنصر واجهة جديد.
Single source of truth for the table
Two files, identical contents: tools/umm_al_qura_table.py and static/src/js/umm_al_qura_table.js. A unit test asserts byte-equal arrays so client and server never drift.
مصدر واحد للجدول. ملفان متطابقان، باختبار وحدة يؤكد التطابق بين الخادم والمتصفح.
Pure storage stays Gregorian
Nothing changes in the database. Odoo's DATE column type still holds the ISO Gregorian value. Reports, exports, and SQL queries return what they always returned.
التخزين يبقى ميلادياً. لا تغيير في قاعدة البيانات. التقارير والتصدير وSQL ترجع نفس البيانات.
No moon-sighting drift
Umm al-Qura is a tabulated calendar published by the Saudi authorities, not a live observation. Every machine sees the same date for the same Gregorian day. No timezone gotchas, no network calls.
لا انحراف بسبب رؤية الهلال. أم القرى تقويم مجدول معتمد من السلطات السعودية، وليس مشاهدة لحظية. كل الأجهزة ترى نفس التاريخ.
Multi-company isolation respected
Per-user mode preference is on res.users. Per-company default is on res.company. Switching companies switches the default. Switching users switches the active mode.
عزل الشركات محترم. وضع المستخدم على res.users، الإعداد الافتراضي للشركة على res.company.
Tested across both axes
Unit tests cover the conversion table at boundary years (1300 AH, 1500 AH), known anchor dates (1 Muharram 1444, 1 Shawwal 1445, 1 Ramadan 1446), Tabular fallback, and per-user preference round-trip.
مغطى باختبارات. حدود السنوات، وتواريخ معيارية مثل ١ محرم و١ شوال و١ رمضان، والرجوع للتقويم الجدولي، وتفضيل كل مستخدم.
Where stock Odoo stops . أين يتوقف أودو الأصلي
A short, honest comparison. Without naming names.
مقارنة قصيرة وصريحة. بدون ذكر أسماء.
Stock Odoo, Community + Enterprise
No Hijri support of any kind. Date fields are Gregorian; pickers are Gregorian; reports are Gregorian. Saudi users keep an external converter open in parallel.
أودو الأصلي بإصداريه لا يدعم الهجري إطلاقاً. كل حقول التواريخ ميلادية.
Free community modules
Various unmaintained packages show Hijri in one or two screens, replace the DatePicker entirely (losing native shortcuts), or rely on a JavaScript-only conversion that drifts from server data. Often broken on the latest Odoo release.
حزم مجتمعية غير محدثة، تعرض الهجري في شاشة أو شاشتين، أو تستبدل منتقي التاريخ بالكامل، وغالباً معطلة في أحدث إصدار.
Hijri Date Everywhere
Hijri appears on every date and datetime field. Native widget preserved. Same conversion in Python and JavaScript. Per-user mode. QWeb helper for reports. Tested. Maintained. Compatible with Community and Enterprise.
الهجري في كل حقل تاريخ. منتقي التاريخ الأصلي محفوظ. نفس التحويل في الخادم والمتصفح. وضع لكل مستخدم. مساعد QWeb للتقارير.
Privacy + safety . الخصوصية والأمان
Five things this module never does.
خمسة أمور لا يفعلها هذا التطبيق أبداً.
No internet call
All conversion is local. No third-party Hijri API, no time-zone server lookups.
لا اتصال إنترنت. التحويل محلي بالكامل.
No telemetry
Zero usage tracking. No phone-home, no analytics endpoint, no ping on install.
لا تتبع. لا إرسال بيانات. لا تحليلات.
No data change
Existing Gregorian values in the database stay exactly as they were. Uninstall is a clean revert.
لا تغيير في البيانات. القيم الموجودة تبقى كما هي. الإزالة آمنة.
No external font
The backend uses Odoo's own fonts. Listing page typography is the only place Tajawal loads, and only for the marketing copy.
لا خطوط خارجية في الواجهة الخلفية. أودو يستخدم خطوطه الأصلية.
No record rule bypass
Patches respect Odoo's existing ACL and record rules. Users only see Hijri overlays on records they could already read.
لا تجاوز للأذونات. المستخدم يرى الهجري فقط على السجلات المسموح له بقراءتها.
Frequently asked questions . الأسئلة الشائعة
Does this work on Odoo Enterprise as well as Community?
Yes. The patch targets the stock OWL DatePicker shipped in the web module, which is identical between Community and Enterprise. Both editions are supported.
نعم. يعمل على إصدار المجتمع وإصدار المؤسسات. التعديل على منتقي التاريخ في وحدة web المشتركة.
Which Hijri calendar variant is used?
Umm al-Qura, the official tabulated calendar published by KSA's General Authority for Survey. It is the variant ZATCA, the Saudi Central Bank, and government portals use.
أم القرى الرسمي، الصادر عن الهيئة العامة للمساحة. هو المعتمد لدى زاتكا والبنك المركزي السعودي والجهات الحكومية.
What happens for dates before 1300 AH or after 1500 AH?
The Tabular Hijri (algorithmic) variant takes over. Conversion never raises, never blanks. Predictable output for historical archives and far-future projections.
يستخدم التقويم الجدولي بالحساب. لا أعطال، لا فراغات. ناتج متوقع للأرشيف القديم والمستقبل البعيد.
Will moon-sighting differences cause my data to drift?
No. The Umm al-Qura calendar is tabulated, not observational. Every server and every browser sees the same Hijri date for the same Gregorian date. It does not vary by region.
لا. تقويم أم القرى مجدول وليس مبني على رؤية الهلال. كل خادم وكل متصفح يرى نفس التاريخ الهجري لنفس التاريخ الميلادي.
Does it work on date-only and datetime fields?
Both. Date fields show Hijri date only; datetime fields show Hijri date with the same time component the underlying field carries.
يعمل على الحقول من نوع تاريخ ومن نوع تاريخ ووقت. حقل التاريخ يظهر الهجري فقط، وحقل التاريخ والوقت يظهر الهجري مع الوقت.
Does it slow down the UI?
No measurable impact. Conversion is a constant-time lookup against the loaded table. Rendering adds one extra text node per date cell.
لا أثر ملموس على السرعة. التحويل بحث ثابت الزمن. الرسم يضيف عنصر نص واحد لكل حقل.
Can each user pick their own mode?
Yes. Each user has a Hijri Display field in their preferences. Until a user changes it, the company-wide default applies.
نعم. كل مستخدم يضبط الوضع المفضل في تفضيلاته. حتى ذلك الوقت، يستخدم الإعداد الافتراضي للشركة.
Does it print Hijri in invoices and statements?
Yes. A QWeb helper exposes t-esc-hijri and a hijri(date) filter. Drop it into any existing report template; no theme override required.
نعم. مساعد QWeb يوفر t-esc-hijri ومرشح hijri(date). يضاف لأي قالب تقرير دون استبدال للقالب.
What is the upgrade path between Odoo versions?
Same code lineage targets 17.0, 18.0, and 19.0. Buy once per version; identical feature set. Upgrades to a new Odoo release are a routine module port.
نفس الكود لإصدارات ١٧ و١٨ و١٩. شراء واحد لكل إصدار، نفس الميزات. الترقية لإصدار جديد عملية نقل روتينية.
Will it break when Odoo's DatePicker changes in a future release?
If a future Odoo release rewrites the DatePicker entirely, the patch is reapplied in a routine port. We monitor Odoo's master branch and ship updates ahead of the official release.
إذا أعاد أودو كتابة منتقي التاريخ في إصدار قادم، نعيد تطبيق التعديل في نقل روتيني. نتابع فرع master ونصدر تحديثات قبل الإصدار الرسمي.
Pricing . التسعير
USD 50 . one-time . OPL-1
One flat price per Odoo version. No subscription, no per-user fee, no per-company tax. Includes Community and Enterprise.
سعر ثابت واحد لكل إصدار. بدون اشتراك، بدون رسوم لكل مستخدم، بدون رسوم لكل شركة. يشمل المجتمع والمؤسسات.
Questions about deployment? info@erpheritage.com.au
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module