# kerbrose/odoo_hijri_widget architecture

> Architecture diagram of the GitHub repository kerbrose/odoo_hijri_widget, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kerbrose/odoo_hijri_widget
- Repository: https://github.com/kerbrose/odoo_hijri_widget

## Overview

This Odoo addon provides Umm al-Qura Hijri date and datetime widgets. A user enters a field configured with the `hijri` widget; Odoo dispatches to the registered field component, which embeds the Hijri picker, formats input, and reports changes back to the record. The addon also documents a related Gregorian-date option and adds Hijri fields to account moves. The graph reflects the manifest and sampled JavaScript; the view and template XML contents were not sampled, so their internal wiring is not asserted.

Main entry points: [`kerbrose_hijri_widget/__manifest__.py`](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/__manifest__.py) (Addon assets), [`kerbrose_hijri_widget/static/src/fields/date_field_hijri.js`](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.js) (Hijri date field), [`kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js`](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js) (Hijri date picker), [`kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js`](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js) (Tempus Dominus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["Odoo Integration"]
  node_odoo["Odoo web client"]
  node_addon_config["Addon assets<br/>[__manifest__.py]"]
end

subgraph group_fields["Date Fields"]
  node_date_field["Hijri date field"]
  node_datetime_field["Hijri datetime field"]
  node_related_gregorian["Related Gregorian date"]
  node_date_template["Date field template"]
  node_datetime_template["Datetime field template"]
end

subgraph group_picker["Hijri Picker"]
  node_date_picker["Hijri date picker"]
  node_picker_template["Picker template"]
  node_tempus_dominus["Tempus Dominus<br/>[tempusdominus.js]"]
  node_popper["Popper positioning<br/>[popper.js]"]
end

subgraph group_account["Account Data"]
  node_account_move[("Account move fields<br/>[account_move.py]")]
  node_account_view["Account move view<br/>[account_move.xml]"]
end

node_user(("Odoo user"))

node_user -->|"enters date"| node_odoo
node_odoo -->|"dispatches hijri"| node_date_field
node_addon_config -->|"loads asset"| node_date_field
node_addon_config -->|"loads asset"| node_datetime_field
node_addon_config -->|"loads asset"| node_date_picker
node_addon_config -->|"loads asset"| node_tempus_dominus
node_addon_config -->|"loads asset"| node_popper
node_addon_config -->|"loads view"| node_account_view
node_date_field -->|"embeds"| node_date_picker
node_datetime_field -->|"embeds"| node_date_picker
node_date_picker -->|"creates picker"| node_tempus_dominus
node_tempus_dominus -->|"requires positioning"| node_popper
node_date_field -.->|"updates related date"| node_related_gregorian
node_account_move -.->|"exposes fields"| node_account_view

click node_addon_config "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/__manifest__.py"
click node_date_field "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.js"
click node_datetime_field "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.js"
click node_related_gregorian "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.js"
click node_date_picker "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js"
click node_picker_template "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.xml"
click node_date_template "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.xml"
click node_datetime_template "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.xml"
click node_tempus_dominus "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js"
click node_popper "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/lib/popper/popper.js"
click node_account_move "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/models/account_move.py"
click node_account_view "https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/views/account_move.xml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_odoo,node_addon_config,node_user toneBlue
class node_date_field,node_datetime_field,node_related_gregorian,node_date_template,node_datetime_template toneAmber
class node_date_picker,node_picker_template,node_tempus_dominus,node_popper toneMint
class node_account_move,node_account_view toneRose
```

## Components

### Odoo Integration

- **Odoo web client**
- [Addon assets](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/__manifest__.py): `kerbrose_hijri_widget/__manifest__.py`

### Date Fields

- [Hijri date field](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.js): `kerbrose_hijri_widget/static/src/fields/date_field_hijri.js`
- [Hijri datetime field](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.js): `kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.js`
- [Related Gregorian date](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.js): `kerbrose_hijri_widget/static/src/fields/date_field_hijri.js`
- [Date field template](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/date_field_hijri.xml): `kerbrose_hijri_widget/static/src/fields/date_field_hijri.xml`
- [Datetime field template](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.xml): `kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.xml`

### Hijri Picker

- [Hijri date picker](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js): `kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js`
- [Picker template](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.xml): `kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.xml`
- [Tempus Dominus](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js): `kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js`
- [Popper positioning](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/static/lib/popper/popper.js): `kerbrose_hijri_widget/static/lib/popper/popper.js`

### Account Data

- [Account move fields](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/models/account_move.py): `kerbrose_hijri_widget/models/account_move.py`
- [Account move view](https://github.com/kerbrose/odoo_hijri_widget/blob/master/kerbrose_hijri_widget/views/account_move.xml): `kerbrose_hijri_widget/views/account_move.xml`

### Other components

- **Odoo user**

## Connections

- Odoo user → Odoo web client: enters date (evidence: `README.md`)
- Odoo web client → Hijri date field: dispatches hijri (evidence: `README.md`)
- Addon assets → Hijri date field: loads asset (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Addon assets → Hijri datetime field: loads asset (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Addon assets → Hijri date picker: loads asset (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Addon assets → Tempus Dominus: loads asset (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Addon assets → Popper positioning: loads asset (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Addon assets → Account move view: loads view (evidence: `kerbrose_hijri_widget/__manifest__.py`)
- Hijri date field → Hijri date picker: embeds (evidence: `kerbrose_hijri_widget/static/src/fields/date_field_hijri.js`)
- Hijri datetime field → Hijri date picker: embeds (evidence: `kerbrose_hijri_widget/static/src/fields/datetime_field_hijri.js`)
- Hijri date picker → Tempus Dominus: creates picker (evidence: `kerbrose_hijri_widget/static/src/datepicker_hijri/datepicker_hijri.js`)
- Tempus Dominus → Popper positioning: requires positioning (evidence: `kerbrose_hijri_widget/static/lib/tempusdominus6/tempusdominus.js`)
- Hijri date field → Related Gregorian date: updates related date (evidence: `README.md`)
- Account move fields → Account move view: exposes fields
