# Models and fields

Legal foundation setup defines 18 model(s) and 157 field(s) on Jaah 19.0. This page lists every model the app creates or extends and the purpose of each field. Generated from the installed database on 2026-10-13 for version 19.0.2.5.50.

**Legal foundation setup defines 18 model(s) and 157 field(s) on Jaah 19.0. This page lists every model the app creates or extends and the purpose of each field. Generated from the installed database on 2026-10-13 for version 19.0.2.5.50.**

## Menu (`ir.ui.menu`) {#model-ir-ui-menu}

Model. Defined by `base`; extended by this app.

## Court Circuit (`j.circuit`) {#model-j-circuit}

Model. Defined by this app.

### Active (`active`) {#field-j-circuit-active}

Type: `boolean` · Stored

### Branch (`company_id`) {#field-j-circuit-company-id}

Type: `many2one` · Stored · Relation: Companies (`res.company`)

### Court (`court_id`) {#field-j-circuit-court-id}

Type: `many2one` · Stored · Relation: Court (`j.court`)

### Created on (`create_date`) {#field-j-circuit-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-circuit-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Email (`email`) {#field-j-circuit-email}

Type: `char` · Stored

### Name (`name`) {#field-j-circuit-name}

Type: `char` · Required · Stored

### Phone (`phone`) {#field-j-circuit-phone}

Type: `char` · Stored

### Last Updated on (`write_date`) {#field-j-circuit-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-circuit-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Court (`j.court`) {#model-j-court}

Model. Defined by this app.

### Active (`active`) {#field-j-court-active}

Type: `boolean` · Stored · Tracked in the chatter

### Circuits (`circuit_ids`) {#field-j-court-circuit-ids}

Type: `one2many` · Stored · Relation: Court Circuit (`j.circuit`)

### City (`city`) {#field-j-court-city}

Type: `char` · Stored · Tracked in the chatter

### Branch (`company_id`) {#field-j-court-company-id}

Type: `many2one` · Stored · Relation: Companies (`res.company`) · Tracked in the chatter

> The branch this court belongs to. Leave empty for a court more than one branch litigates in — it is then visible to all of them.

### Country (`country_id`) {#field-j-court-country-id}

Type: `many2one` · Stored · Relation: Country (`res.country`) · Tracked in the chatter

### Created on (`create_date`) {#field-j-court-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-court-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Email (`email`) {#field-j-court-email}

Type: `char` · Stored · Tracked in the chatter

### Name (`name`) {#field-j-court-name}

Type: `char` · Required · Stored · Tracked in the chatter

### Phone (`phone`) {#field-j-court-phone}

Type: `char` · Stored · Tracked in the chatter

### State (`state_id`) {#field-j-court-state-id}

Type: `many2one` · Stored · Relation: Country state (`res.country.state`) · Tracked in the chatter

### Street (`street`) {#field-j-court-street}

Type: `char` · Stored · Tracked in the chatter

### Street2 (`street2`) {#field-j-court-street2}

Type: `char` · Stored · Tracked in the chatter

### Last Updated on (`write_date`) {#field-j-court-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-court-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Zip (`zip`) {#field-j-court-zip}

Type: `char` · Stored · Tracked in the chatter

## Judge (`j.judge`) {#model-j-judge}

Model. Defined by this app.

### Active (`active`) {#field-j-judge-active}

Type: `boolean` · Stored · Tracked in the chatter

### Branch (`company_id`) {#field-j-judge-company-id}

Type: `many2one` · Required · Stored · Relation: Companies (`res.company`) · Tracked in the chatter

### Created on (`create_date`) {#field-j-judge-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-judge-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Email (`email`) {#field-j-judge-email}

Type: `char` · Stored · Tracked in the chatter

### Name (`name`) {#field-j-judge-name}

Type: `char` · Required · Stored · Tracked in the chatter

### Phone (`phone`) {#field-j-judge-phone}

Type: `char` · Stored · Tracked in the chatter

### Last Updated on (`write_date`) {#field-j-judge-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-judge-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Lawyer (`j.lawyer`) {#model-j-lawyer}

Model. Defined by this app.

### Active (`active`) {#field-j-lawyer-active}

Type: `boolean` · Stored · Tracked in the chatter

> Uncheck to archive: the lawyer disappears from new pickers but stays linked on historical matters and hearings.

### Branch (`company_id`) {#field-j-lawyer-company-id}

Type: `many2one` · Required · Stored · Relation: Companies (`res.company`)

> Owning branch (multi-company scope).

### Country (`country_id`) {#field-j-lawyer-country-id}

Type: `many2one` · Stored · Relation: Country (`res.country`) · Tracked in the chatter

> Country of practice.

### Created on (`create_date`) {#field-j-lawyer-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-lawyer-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Name (`name`) {#field-j-lawyer-name}

Type: `char` · Stored · Tracked in the chatter

> Display name of the lawyer; used everywhere the lawyer appears (cases, hearings, agencies, smart buttons). Required unless a Related User is set — in which case the user's name is used.

### Practice Area (`practice_area_ids`) {#field-j-lawyer-practice-area-ids}

Type: `many2many` · Stored · Relation: Law Practice Area (`j.practice.area`) · Tracked in the chatter

> One or more practice areas this lawyer specializes in. Used to filter the lawyer list and to suggest the right lawyer when registering a new matter.

### Supervisor (`supervisor_id`) {#field-j-lawyer-supervisor-id}

Type: `many2one` · Stored · Relation: User (`res.users`) · Tracked in the chatter

> Optional senior reviewer; used by reporting and by some approval flows in sub-modules.

### User (`user_id`) {#field-j-lawyer-user-id}

Type: `many2one` · Stored · Relation: User (`res.users`) · Tracked in the chatter

> Optional internal user linked to this lawyer. Leave it blank to have one auto-created from Work Email on save. A given user can be linked to at most one lawyer.

### Work Email (`work_email`) {#field-j-lawyer-work-email}

Type: `char` · Stored · Tracked in the chatter

> Used as the linked res.users login when auto-creating the user. If you leave the related user blank when saving and a Work Email is set here, a user with this email as login is auto-provisioned in the Lawyers / Manager privilege.

### Work Phone (`work_phone`) {#field-j-lawyer-work-phone}

Type: `char` · Stored · Tracked in the chatter

> Office or mobile number; mirrored to the linked user's phone.

### Last Updated on (`write_date`) {#field-j-lawyer-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-lawyer-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Set Lawyer User Password (`j.lawyer.set.password.wizard`) {#model-j-lawyer-set-password-wizard}

Wizard (transient). Defined by this app.

### Confirm Password (`confirm_password`) {#field-j-lawyer-set-password-wizard-confirm-password}

Type: `char` · Required · Stored

### Created on (`create_date`) {#field-j-lawyer-set-password-wizard-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-lawyer-set-password-wizard-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Lawyer (`lawyer_id`) {#field-j-lawyer-set-password-wizard-lawyer-id}

Type: `many2one` · Required · Readonly · Stored · Relation: Lawyer (`j.lawyer`)

### New Password (`new_password`) {#field-j-lawyer-set-password-wizard-new-password}

Type: `char` · Required · Stored

### User (`user_id`) {#field-j-lawyer-set-password-wizard-user-id}

Type: `many2one` · Readonly · Relation: User (`res.users`) · Computed · Related to: `lawyer_id.user_id`

> Optional internal user linked to this lawyer. Leave it blank to have one auto-created from Work Email on save. A given user can be linked to at most one lawyer.

### Login (`user_login`) {#field-j-lawyer-set-password-wizard-user-login}

Type: `char` · Readonly · Computed · Related to: `user_id.login`

> Used to log into the system

### Last Updated on (`write_date`) {#field-j-lawyer-set-password-wizard-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-lawyer-set-password-wizard-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Legal Client Request (`j.legal.client.request`) {#model-j-legal-client-request}

Model. Defined by this app.

### Active (`active`) {#field-j-legal-client-request-active}

Type: `boolean` · Stored

### Attachments (`attachment_ids`) {#field-j-legal-client-request-attachment-ids}

Type: `many2many` · Stored · Relation: Attachment (`ir.attachment`)

### Category (`category_id`) {#field-j-legal-client-request-category-id}

Type: `many2one` · Stored · Relation: Client Request Category (`j.legal.client.request.category`) · Tracked in the chatter

> What kind of legal work this request is, independently of which pipeline it becomes (for example a new claim, a case study or an appeal).

### Client Profile (`client_id`) {#field-j-legal-client-request-client-id}

Type: `many2one` · Stored · Relation: Contact (`res.partner`) · Tracked in the chatter

### Branch (`company_id`) {#field-j-legal-client-request-company-id}

Type: `many2one` · Required · Stored · Relation: Companies (`res.company`)

### Created on (`create_date`) {#field-j-legal-client-request-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-legal-client-request-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Deadline (`deadline_date`) {#field-j-legal-client-request-deadline-date}

Type: `date` · Stored · Tracked in the chatter

### Description (`description`) {#field-j-legal-client-request-description}

Type: `html` · Stored

### Lawyers (`lawyer_ids`) {#field-j-legal-client-request-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`) · Tracked in the chatter

### Sequence (`name`) {#field-j-legal-client-request-name}

Type: `char` · Stored

### Opposition (`opposition`) {#field-j-legal-client-request-opposition}

Type: `char` · Stored · Tracked in the chatter

> Adverse party as free text. Carried into the case / consulting summary on registration; lawyers structure the parties on the registered record.

### Reject Date (`reject_date`) {#field-j-legal-client-request-reject-date}

Type: `datetime` · Readonly · Stored

### Reject Reason (`reject_reason_id`) {#field-j-legal-client-request-reject-reason-id}

Type: `many2one` · Stored · Relation: Legal Client Request Reject Reason (`j.legal.client.request.reject.reason`)

### Email (`requester_email`) {#field-j-legal-client-request-requester-email}

Type: `char` · Stored · Tracked in the chatter

### Name (`requester_name`) {#field-j-legal-client-request-requester-name}

Type: `char` · Stored · Tracked in the chatter

### Phone (`requester_phone`) {#field-j-legal-client-request-requester-phone}

Type: `char` · Stored · Tracked in the chatter

### Status (`state`) {#field-j-legal-client-request-state}

Type: `selection` · Stored · Values: Draft (`draft`), Approved (`approved`), Rejected (`rejected`) · Tracked in the chatter

### Subject (`subject`) {#field-j-legal-client-request-subject}

Type: `char` · Stored · Tracked in the chatter

### Type (`type`) {#field-j-legal-client-request-type}

Type: `selection` · Required · Stored · Tracked in the chatter

### Last Updated on (`write_date`) {#field-j-legal-client-request-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-legal-client-request-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Client Request Category (`j.legal.client.request.category`) {#model-j-legal-client-request-category}

Model. Defined by this app.

> Categories the office classifies incoming requests with: what kind of legal work a request is, independently of which pipeline it becomes. `type` is optional on purpose. A category left blank is offered on every request; one tied to a type is offered only on requests of that type, so the picker stays short without forcing the office to duplicate a category it uses everywhere.

### Active (`active`) {#field-j-legal-client-request-category-active}

Type: `boolean` · Stored · Tracked in the chatter

### Colour (`color`) {#field-j-legal-client-request-category-color}

Type: `integer` · Stored

### Branch (`company_id`) {#field-j-legal-client-request-category-company-id}

Type: `many2one` · Stored · Relation: Companies (`res.company`) · Tracked in the chatter

### Created on (`create_date`) {#field-j-legal-client-request-category-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-legal-client-request-category-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Category (`name`) {#field-j-legal-client-request-category-name}

Type: `char` · Required · Stored · Translatable · Tracked in the chatter

### Requests (`request_count`) {#field-j-legal-client-request-category-request-count}

Type: `integer` · Readonly · Computed

### Sequence (`sequence`) {#field-j-legal-client-request-category-sequence}

Type: `integer` · Stored

### Applies To (`type`) {#field-j-legal-client-request-category-type}

Type: `selection` · Stored · Tracked in the chatter

> Leave empty to offer this category on every request. Set it to restrict the category to requests of that type.

### Last Updated on (`write_date`) {#field-j-legal-client-request-category-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-legal-client-request-category-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Legal Client Request Reject Reason (`j.legal.client.request.reject.reason`) {#model-j-legal-client-request-reject-reason}

Model. Defined by this app.

### Branch (`company_id`) {#field-j-legal-client-request-reject-reason-company-id}

Type: `many2one` · Stored · Relation: Companies (`res.company`) · Tracked in the chatter

### Created on (`create_date`) {#field-j-legal-client-request-reject-reason-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-legal-client-request-reject-reason-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Description (`description`) {#field-j-legal-client-request-reject-reason-description}

Type: `html` · Stored · Translatable

### Name (`name`) {#field-j-legal-client-request-reject-reason-name}

Type: `char` · Required · Stored · Translatable · Tracked in the chatter

### Rejected Requests Count (`request_count`) {#field-j-legal-client-request-reject-reason-request-count}

Type: `integer` · Readonly · Computed

### Rejected Requests (`request_ids`) {#field-j-legal-client-request-reject-reason-request-ids}

Type: `one2many` · Stored · Relation: Legal Client Request (`j.legal.client.request`)

### Last Updated on (`write_date`) {#field-j-legal-client-request-reject-reason-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-legal-client-request-reject-reason-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Reject Client Request — Reason Wizard (`j.legal.client.request.reject.wizard`) {#model-j-legal-client-request-reject-wizard}

Wizard (transient). Defined by this app.

### Created on (`create_date`) {#field-j-legal-client-request-reject-wizard-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-legal-client-request-reject-wizard-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Note (`description`) {#field-j-legal-client-request-reject-wizard-description}

Type: `text` · Stored

> Optional clarification for the chatter.

### Reject Reason (`reject_reason_id`) {#field-j-legal-client-request-reject-wizard-reject-reason-id}

Type: `many2one` · Required · Stored · Relation: Legal Client Request Reject Reason (`j.legal.client.request.reject.reason`)

### Client Request (`request_id`) {#field-j-legal-client-request-reject-wizard-request-id}

Type: `many2one` · Required · Readonly · Stored · Relation: Legal Client Request (`j.legal.client.request`)

### Last Updated on (`write_date`) {#field-j-legal-client-request-reject-wizard-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-legal-client-request-reject-wizard-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## List Report Wizard (`j.list.report.wizard`) {#model-j-list-report-wizard}

Wizard (transient). Defined by this app.

> Shared frame for LIST reports (PDFs aggregating multiple records). The base module declares the common filters (date range, lawyers, clients) and a shared `_build_date_list` helper. Owning modules extend the wizard via `_inherit` to: * register their `type` Selection value (e.g. 'matters', 'hearings', 'consulting') with `selection_add`; * add the per-type state-tag M2M field; * override `action_print` to dispatch to a `_print_<type>` method that they implement. Per the split design, j_law_base does NOT know about j.matter, j.hearing or j.consulting — those models live in the cases / consulting modules and contribute their own type, fields, and dispatch branch.

### Created on (`create_date`) {#field-j-list-report-wizard-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-list-report-wizard-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### From (`date_from`) {#field-j-list-report-wizard-date-from}

Type: `date` · Stored

### To (`date_to`) {#field-j-list-report-wizard-date-to}

Type: `date` · Stored

### Group by Date (`group_by_date`) {#field-j-list-report-wizard-group-by-date}

Type: `boolean` · Stored

### Print all Durations (`ignore_date`) {#field-j-list-report-wizard-ignore-date}

Type: `boolean` · Stored

### Lawyers (`lawyer_ids`) {#field-j-list-report-wizard-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`)

### Clients (`partner_ids`) {#field-j-list-report-wizard-partner-ids}

Type: `many2many` · Stored · Relation: Contact (`res.partner`)

### Type (`type`) {#field-j-list-report-wizard-type}

Type: `selection` · Required · Stored

### User (`user_id`) {#field-j-list-report-wizard-user-id}

Type: `many2one` · Stored · Relation: User (`res.users`)

### Last Updated on (`write_date`) {#field-j-list-report-wizard-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-list-report-wizard-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Neglected Report Wizard (`j.neglected.report.wizard`) {#model-j-neglected-report-wizard}

Wizard (transient). Defined by this app.

> Abstract wizard frame — owning modules add type + per-type fields.

### Created on (`create_date`) {#field-j-neglected-report-wizard-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-neglected-report-wizard-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Neglected For (Days) (`days`) {#field-j-neglected-report-wizard-days}

Type: `integer` · Required · Stored

> Show records whose last write date is older than today minus this number of days. Default is 30 days.

### Lawyers (`lawyer_ids`) {#field-j-neglected-report-wizard-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`)

### Clients (`partner_ids`) {#field-j-neglected-report-wizard-partner-ids}

Type: `many2many` · Stored · Relation: Contact (`res.partner`)

### Type (`type`) {#field-j-neglected-report-wizard-type}

Type: `selection` · Required · Stored

### User (`user_id`) {#field-j-neglected-report-wizard-user-id}

Type: `many2one` · Stored · Relation: User (`res.users`)

### Last Updated on (`write_date`) {#field-j-neglected-report-wizard-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-neglected-report-wizard-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Law Practice Area (`j.practice.area`) {#model-j-practice-area}

Model. Defined by this app.

### Active (`active`) {#field-j-practice-area-active}

Type: `boolean` · Stored · Tracked in the chatter

### Branch (`company_id`) {#field-j-practice-area-company-id}

Type: `many2one` · Stored · Relation: Companies (`res.company`) · Tracked in the chatter

### Created on (`create_date`) {#field-j-practice-area-create-date}

Type: `datetime` · Readonly · Stored

### Created by (`create_uid`) {#field-j-practice-area-create-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

### Lawyer Count (`lawyer_count`) {#field-j-practice-area-lawyer-count}

Type: `integer` · Readonly · Computed

### Lawyers (`lawyer_ids`) {#field-j-practice-area-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`)

### Name (`name`) {#field-j-practice-area-name}

Type: `char` · Required · Stored · Translatable · Tracked in the chatter

### Last Updated on (`write_date`) {#field-j-practice-area-write-date}

Type: `datetime` · Readonly · Stored

### Last Updated by (`write_uid`) {#field-j-practice-area-write-uid}

Type: `many2one` · Readonly · Stored · Relation: User (`res.users`)

## Activity (`mail.activity`) {#model-mail-activity}

Model. Defined by `mail`; extended by this app.

### Review Request Activity (`review_request_activity`) {#field-mail-activity-review-request-activity}

Type: `boolean` · Stored

> Flagged on activities created on a j.legal.client.request to ask the assigned lawyer to register or reject it. Auto-closed when the request flips state.

## Companies (`res.company`) {#model-res-company}

Model. Defined by `base`; extended by this app.

### Court Circuits (`circuit_check`) {#field-res-company-circuit-check}

Type: `boolean` · Stored

> When enabled, courts can be split into multiple circuits and the Circuits sub-menu becomes visible.

### Default Deadline (`client_request_default_deadline_days`) {#field-res-company-client-request-default-deadline-days}

Type: `integer` · Stored

> Number of days from request submission to the auto-computed deadline on the matter. The portal create form does not ask the requester for a deadline; this value drives it.

### Default Lawyers (`client_request_default_lawyer_ids`) {#field-res-company-client-request-default-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`)

> Auto-assigned to incoming client requests submitted via the portal when no lawyer is otherwise specified.

### Review Within (`client_request_review_days`) {#field-res-company-client-request-review-days}

Type: `integer` · Stored

> Days from request submission when the Register / Reject review activity falls due for the assigned lawyer(s).

### Judges (`judge_check`) {#field-res-company-judge-check}

Type: `boolean` · Stored

> When enabled, the Judges menu is visible and a judge can be attached to a hearing.

### Register / Reject Client Request Activity (`register_request_activity`) {#field-res-company-register-request-activity}

Type: `boolean` · Stored

> If enabled, a Register / Reject review activity is auto-scheduled on every incoming client request for each assigned lawyer.

### Multi Clients (`stakeholders_check`) {#field-res-company-stakeholders-check}

Type: `boolean` · Stored

> Enable multiple clients per record.

## Config Settings (`res.config.settings`) {#model-res-config-settings}

Wizard (transient). Defined by `base`; extended by this app.

> Surfaces the per-company `j_law_base` toggles in the shared Law settings page. Sub-modules add their own related fields via `_inherit = 'res.config.settings'` and xpath their UI block into the `app[name='j_law']` shell defined in `views/res_config_settings.xml`.

### Court Circuits (`circuit_check`) {#field-res-config-settings-circuit-check}

Type: `boolean` · Computed · Related to: `company_id.circuit_check`

> When enabled, courts can be split into multiple circuits and the Circuits sub-menu becomes visible.

### Default Deadline (`client_request_default_deadline_days`) {#field-res-config-settings-client-request-default-deadline-days}

Type: `integer` · Computed · Related to: `company_id.client_request_default_deadline_days`

> Number of days from request submission to the auto-computed deadline on the matter. The portal create form does not ask the requester for a deadline; this value drives it.

### Default Lawyers (`client_request_default_lawyer_ids`) {#field-res-config-settings-client-request-default-lawyer-ids}

Type: `many2many` · Relation: Lawyer (`j.lawyer`) · Computed · Related to: `company_id.client_request_default_lawyer_ids`

> Auto-assigned to incoming client requests submitted via the portal when no lawyer is otherwise specified.

### Review Within (`client_request_review_days`) {#field-res-config-settings-client-request-review-days}

Type: `integer` · Computed · Related to: `company_id.client_request_review_days`

> Days from request submission when the Register / Reject review activity falls due for the assigned lawyer(s).

### Judges (`judge_check`) {#field-res-config-settings-judge-check}

Type: `boolean` · Computed · Related to: `company_id.judge_check`

> When enabled, the Judges menu is visible and a judge can be attached to a hearing.

### Register / Reject Client Request Activity (`register_request_activity`) {#field-res-config-settings-register-request-activity}

Type: `boolean` · Computed · Related to: `company_id.register_request_activity`

> If enabled, a Register / Reject review activity is auto-scheduled on every incoming client request for each assigned lawyer.

### Multi Clients (`stakeholders_check`) {#field-res-config-settings-stakeholders-check}

Type: `boolean` · Computed · Related to: `company_id.stakeholders_check`

> Enable multiple clients per record.

## Contact (`res.partner`) {#model-res-partner}

Model. Defined by `base`; extended by this app.

### Circuits (`circuit_ids`) {#field-res-partner-circuit-ids}

Type: `one2many` · Stored · Relation: Court Circuit (`j.circuit`)

### Country (`country_id`) {#field-res-partner-country-id}

Type: `many2one` · Stored · Relation: Country (`res.country`) · Tracked in the chatter

> Apply only if delivery or invoicing country match.

### Default Lawyers (`lawyer_ids`) {#field-res-partner-lawyer-ids}

Type: `many2many` · Stored · Relation: Lawyer (`j.lawyer`) · Tracked in the chatter · Visible to: Lawyers / Read-only (`j_law_base.group_j_law_lawyers_readonly`)

### Nationality (`nationality_id`) {#field-res-partner-nationality-id}

Type: `many2one` · Stored · Relation: Country (`res.country`) · Tracked in the chatter

## User (`res.users`) {#model-res-users}

Model. Defined by `base`; extended by this app.

### Lawyers (`lawyer_count`) {#field-res-users-lawyer-count}

Type: `integer` · Readonly · Computed

### Lawyer (`lawyer_id`) {#field-res-users-lawyer-id}

Type: `many2one` · Readonly · Relation: Lawyer (`j.lawyer`) · Computed

> Linked lawyer, if any.

---

- Source: https://jaah.app/docs/law-base/models-and-fields
- Updated: 2026-10-13
- Version: Legal foundation setup 19.0.2.5.50
