Skip to content
Open
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/_images/en-us/config_guide/variables/02-variables-list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/_images/en-us/config_guide/variables/13-category-form.png
24 changes: 20 additions & 4 deletions docs/config_guide/change_request_types/conflict_detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,21 @@ Conflict detection identifies when multiple change requests might affect the sam

On the **Change Request Type** form, check **Enable Conflict Detection** to activate this feature. Then configure one or more conflict rules.

![Enable Conflict Detection checkbox](/_images/en-us/config_guide/change_request_types/20-enable-conflict-detection.png)
```{figure} /_images/en-us/config_guide/change_request_types/20-enable-conflict-detection.png
:alt: Conflict Detection tab with Enable Conflict Detection checkbox highlighted

Check **Enable Conflict Detection** on the **Conflict Detection** tab to activate this feature.
```

### Conflict rules

Each rule defines what constitutes a conflict and how to handle it.

![Conflict Rules section](/_images/en-us/config_guide/change_request_types/21-conflict-rules-section.png)
```{figure} /_images/en-us/config_guide/change_request_types/21-conflict-rules-section.png
:alt: Conflict Rules table showing configured rules with Name, Scope, Action, and Conflict States columns

The **Conflict Rules** table with columns for **Name**, **Scope**, **Action**, and **Conflict States**.
```

| Field | Description |
|-------|-------------|
Expand Down Expand Up @@ -58,7 +66,11 @@ Each rule defines what constitutes a conflict and how to handle it.
| Conflict Fields | Comma-separated list of fields to check (for field scope) |
| Conflict Message | Custom message to display when conflict is detected |

![Conflict Rule form](/_images/en-us/config_guide/change_request_types/22-conflict-rule-form.png)
```{figure} /_images/en-us/config_guide/change_request_types/22-conflict-rule-form.png
:alt: Conflict rule configured with scope, action, and conflict states

A configured conflict rule showing **Scope**, **Action**, **Conflict States**, and **Time Window** settings.
```

## Example: Prevent duplicate phone updates

Expand Down Expand Up @@ -106,7 +118,11 @@ Duplicate detection identifies when a change request is essentially the same as

Check **Enable Duplicate Detection** on the CR type form and configure the detection settings.

![Enable Duplicate Detection checkbox](/_images/en-us/config_guide/change_request_types/23-enable-duplicate-detection.png)
```{figure} /_images/en-us/config_guide/change_request_types/23-enable-duplicate-detection.png
:alt: Duplicate Detection section with Enable Duplicate Detection checkbox highlighted

Check **Enable Duplicate Detection** to identify and prevent duplicate change request submissions.
```

### Configuration options

Expand Down
48 changes: 40 additions & 8 deletions docs/config_guide/change_request_types/creating_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,21 @@ This guide walks through creating a new change request type using the OpenSPP co

Navigate to **Change Requests → Configuration → Change Request Types** and click **New**.

![Change Request Types list](/_images/en-us/config_guide/change_request_types/01-cr-types-list.png)
```{figure} /_images/en-us/config_guide/change_request_types/01-cr-types-list.png
:alt: Change Request Types list showing all configured types

The **Change Request Types** list — click **New** to create a type.
```

### Header

Enter the type name in the header field (placeholder shows "Type Name").

![New Change Request Type form](/_images/en-us/config_guide/change_request_types/02-cr-type-form-new.png)
```{figure} /_images/en-us/config_guide/change_request_types/02-cr-type-form-new.png
:alt: New Change Request Type form with Name field highlighted

Enter the type name in the **Name** field at the top of the form.
```

### Basic info section

Expand All @@ -46,7 +54,11 @@ Enter the type name in the header field (placeholder shows "Type Name").

Enter a description at the bottom of the form to help users understand when to use this type.

![Basic Info section filled](/_images/en-us/config_guide/change_request_types/03-basic-info-filled.png)
```{figure} /_images/en-us/config_guide/change_request_types/03-basic-info-filled.png
:alt: Basic info section with Code, Sequence, Icon, and Target Type fields highlighted

Configure the **Code**, **Sequence**, **Icon**, and **Target Type** fields.
```

## Step 2: Link to detail model

Expand All @@ -57,7 +69,11 @@ Navigate to the **Detail Model** tab.
| Detail Model | `spp.cr.detail.edit_individual` | Technical model name (pre-created, required) |
| Detail Form View | (leave blank) | Auto-selects default view |

![Detail Model tab](/_images/en-us/config_guide/change_request_types/04-detail-model-tab.png)
```{figure} /_images/en-us/config_guide/change_request_types/04-detail-model-tab.png
:alt: Detail Model tab with Detail Model and Detail Form View fields highlighted

Set the **Detail Model** and optionally the **Detail Form View** on the **Detail Model** tab.
```

```{note}
For basic configurations, use existing detail models. See {doc}`overview` for the complete list of available models.
Expand All @@ -72,7 +88,11 @@ Navigate to the **Approval** tab.
| Approval Workflow | Select from dropdown | Choose existing approval definition |
| Auto Approve From Event | No | If yes, requests from event data are auto-approved |

![Approval tab](/_images/en-us/config_guide/change_request_types/07-approval-tab.png)
```{figure} /_images/en-us/config_guide/change_request_types/07-approval-tab.png
:alt: Approval tab with Approval Workflow and Auto Approve From Event fields highlighted

Select an **Approval Workflow** and configure **Auto Approve From Event** on the **Approval** tab.
```

```{note}
The **Auto Apply On Approve** field is located in the **Apply Configuration** tab (see Step 4).
Expand All @@ -96,7 +116,11 @@ Example: Two-level approval for sensitive changes

Navigate to the **Apply Configuration** tab.

![Apply Configuration tab](/_images/en-us/config_guide/change_request_types/05-apply-config-tab.png)
```{figure} /_images/en-us/config_guide/change_request_types/05-apply-config-tab.png
:alt: Apply Configuration tab with Apply Strategy and Auto Apply On Approve fields highlighted

Choose the **Apply Strategy** and enable **Auto Apply On Approve** on the **Apply Configuration** tab.
```

### For simple field mapping

Expand All @@ -118,7 +142,11 @@ In the **Field Mappings** section below, add your mappings:
| `birthdate` | `birthdate` | Direct Copy |
| `gender_id` | `gender` | Direct Copy |

![Field mapping added](/_images/en-us/config_guide/change_request_types/06-field-mapping-added.png)
```{figure} /_images/en-us/config_guide/change_request_types/06-field-mapping-added.png
:alt: Field Mappings section with a phone field mapping added

Add **Field Mappings** to define how change request fields map to registrant fields.
```

### For custom logic

Expand All @@ -140,7 +168,11 @@ Navigate to the **Documents** tab.
| Available Documents | (select document types) | Document types that can be attached |
| Required Documents | (select document types) | Use Ctrl/Cmd+Click for multiple |

![Documents tab](/_images/en-us/config_guide/change_request_types/08-documents-tab.png)
```{figure} /_images/en-us/config_guide/change_request_types/08-documents-tab.png
:alt: Documents tab with Document Validation Mode field highlighted

Set the **Document Validation Mode** and select **Available Documents** and **Required Documents**.
```

### Document validation modes

Expand Down
6 changes: 5 additions & 1 deletion docs/config_guide/change_request_types/field_mappings.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@ When source and target field names match exactly, use Direct Copy:
| `given_name` | `given_name` | Direct Copy |
| `family_name` | `family_name` | Direct Copy |

![Configured field mappings](/_images/en-us/config_guide/change_request_types/11-configured-field-mappings.png)
```{figure} /_images/en-us/config_guide/change_request_types/11-configured-field-mappings.png
:alt: Field Mappings table showing Direct Copy mappings for the Edit Individual Information type

The **Field Mappings** table with **Source Field**, **Target Field**, and **Transform** columns configured for direct field copying.
```

## Relational field mapping

Expand Down
4 changes: 2 additions & 2 deletions docs/config_guide/entitlement_formulas/conditional_logic.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ Add conditions to entitlement items to control who receives each component.
| Condition | `age_years(r.birthdate) >= 60` |

```{figure} /_images/en-us/config_guide/entitlement_formulas/12-conditional-items-by-age.png
:alt: Entitlement items with age-based conditions
:alt: Entitlement item form with Condition Mode toggle and Domain filter highlighted

Entitlement items with age-based **Condition** expressions for different benefit amounts.
Set the **Condition Mode** to Domain or CEL Expression, then define rules to filter beneficiaries.
Comment on lines +79 to +81
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The updated caption is a generic instruction. The previous caption, 'Entitlement items with age-based Condition expressions for different benefit amounts.', was more effective as it specifically described how the figure relates to the 'Age-segmented benefits' example. Consider reverting to the previous caption or using a similarly descriptive one to maintain clarity.

Suggested change
:alt: Entitlement item form with Condition Mode toggle and Domain filter highlighted
Entitlement items with age-based **Condition** expressions for different benefit amounts.
Set the **Condition Mode** to Domain or CEL Expression, then define rules to filter beneficiaries.
:alt: Entitlement item form with Condition Mode toggle and Domain filter highlighted
Entitlement items with age-based **Condition** expressions for different benefit amounts.

```

### Example: Supplement for special groups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ The simplest approach uses a multiplier field:
| Multiplier Field | `z_ind_grp_num_individuals` |

```{figure} /_images/en-us/config_guide/entitlement_formulas/10-multiplier-field-configuration.png
:alt: Multiplier field configuration in entitlement item
:alt: Entitlement items list with Multiplier and Maximum columns highlighted

Set the **Multiplier Field** to scale the amount by a beneficiary attribute.
The **Multiplier** and **Maximum** columns scale the item amount by a beneficiary attribute.
```

### Common multiplier fields
Expand Down Expand Up @@ -112,9 +112,9 @@ Combine multiple entitlement items for complex calculations:
- Condition: `me.is_female_headed`

```{figure} /_images/en-us/config_guide/entitlement_formulas/11-multiple-dynamic-items.png
:alt: Multiple entitlement items for dynamic calculation
:alt: Three entitlement items with different amounts and multipliers

Multiple entitlement items with different amounts, multipliers, and conditions.
Three entitlement items — a base amount, a per-child supplement with multiplier, and a conditional add-on.
```

## Formula-based dynamic calculations
Expand Down
42 changes: 35 additions & 7 deletions docs/config_guide/variables/creating_variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@ This guide is for **implementers** creating and configuring variables in OpenSPP

Go to **Studio → Variables → All Variables**.

![Variables list view](/_images/en-us/config_guide/variables/02-variables-list.png)
```{figure} /_images/en-us/config_guide/variables/02-variables-list.png
:alt: Variables list view grouped by category

The **Variables** list displays all defined variables grouped by category.
```

Click **New** to create a variable.

![New variable form empty](/_images/en-us/config_guide/variables/03-variable-form-empty.png)
```{figure} /_images/en-us/config_guide/variables/03-variable-form-empty.png
:alt: New variable form with Variable Name field highlighted

The new variable form with the **Variable Name** field ready for input.
```

## Basic Configuration

Expand Down Expand Up @@ -122,7 +130,11 @@ Categories help organize variables in the picker.

Click **Save**. The variable is created in Draft state.

![Variable form with basic info](/_images/en-us/config_guide/variables/04-variable-basic-info.png)
```{figure} /_images/en-us/config_guide/variables/04-variable-basic-info.png
:alt: Variable form with basic info fields highlighted

Fill in the **Variable Name**, **Label**, **CEL Accessor**, **Applies To**, and **Value Type** fields.
```

## Advanced Configuration

Expand Down Expand Up @@ -191,7 +203,11 @@ Ensure all required fields are set correctly.

Click the **Activate** button or change **Status** to "Active".

![Variable in draft state with Activate button](/_images/en-us/config_guide/variables/14-variable-draft-state.png)
```{figure} /_images/en-us/config_guide/variables/14-variable-draft-state.png
:alt: Variable form in Draft state with Activate button highlighted

Click **Activate** to make the variable available in CEL expressions.
```

### Step 3: Test in CEL Builder

Expand All @@ -214,7 +230,11 @@ Aggregates compute values over household members, enrollments, or events.
| Value Type | Number |
| Applies To | Group/Household |

![Aggregate variable configuration](/_images/en-us/config_guide/variables/06-source-type-aggregate.png)
```{figure} /_images/en-us/config_guide/variables/06-source-type-aggregate.png
:alt: Variable form configured as Member Aggregate with source fields highlighted

Set **Source Type** to Member Aggregate, then configure the **Aggregate Type**, **Target**, and **Filter**.
```

### Example: Sum of Member Incomes

Expand Down Expand Up @@ -305,7 +325,11 @@ When **Program Configurable** is enabled, each program can set its own value for

Go to **Studio → Variables → Categories** and click **New**.

![Variable categories list](/_images/en-us/config_guide/variables/12-categories-list.png)
```{figure} /_images/en-us/config_guide/variables/12-categories-list.png
:alt: Variables list grouped by category showing category names and counts

The **Variables** list grouped by category shows how variables are organized.
```

| Field | Value |
|-------|-------|
Expand All @@ -315,7 +339,11 @@ Go to **Studio → Variables → Categories** and click **New**.
| Color | #3498db |
| Sequence | 10 |

![New category form](/_images/en-us/config_guide/variables/13-category-form.png)
```{figure} /_images/en-us/config_guide/variables/13-category-form.png
:alt: New category form with Name field

Enter the category **Name** and optional settings to organize your variables.
```

### Assigning Variables to Categories

Expand Down
24 changes: 20 additions & 4 deletions docs/config_guide/variables/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,11 @@ Cache TTL: 3600 seconds (1 hour)

The variable value is computed once and reused for 1 hour before refreshing.

![Caching configuration with TTL settings](/_images/en-us/config_guide/variables/10-caching-configuration.png)
```{figure} /_images/en-us/config_guide/variables/10-caching-configuration.png
:alt: Variable form with Cache Strategy and TTL fields highlighted

Set the **Cache Strategy** and **Cache TTL** to control how long computed values are reused.
```

## Period Granularity

Expand All @@ -128,7 +132,11 @@ Variables can track values over time:
| **Yearly** | Value per year | Annual income |
| **Snapshot** | Point-in-time freeze | Income at enrollment |

![Period granularity configuration](/_images/en-us/config_guide/variables/11-period-granularity.png)
```{figure} /_images/en-us/config_guide/variables/11-period-granularity.png
:alt: Variable form with Period Granularity field highlighted

Choose the **Period Granularity** to track variable values over time.
```

**Snapshot Example:** Capture household income at the moment of program enrollment, even if it changes later.

Expand Down Expand Up @@ -222,14 +230,22 @@ Define a threshold that programs can override.

Variables are configured in **Studio → Variables**.

![Studio dashboard with Variables card highlighted](/_images/en-us/config_guide/variables/01-studio-variables-card.png)
```{figure} /_images/en-us/config_guide/variables/01-studio-variables-card.png
:alt: Studio Dashboard with the Variables card highlighted

Click **Open Variables** on the Studio Dashboard to manage variable definitions.
```

| Menu | Purpose |
|------|---------|
| **All Variables** | View, create, and manage variables |
| **Categories** | Create and organize variable categories |

![Variables list view](/_images/en-us/config_guide/variables/02-variables-list.png)
```{figure} /_images/en-us/config_guide/variables/02-variables-list.png
:alt: Variables list view showing configured variables

The **Variables** list displays all defined variables with their status and source type.
```

## Are You Stuck?

Expand Down
24 changes: 20 additions & 4 deletions docs/config_guide/variables/variable_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ Reference an existing field on an Odoo model.
| Source Field | `x_studio_monthly_income` |
| Value Type | Money |

![Model Field source type configuration](/_images/en-us/config_guide/variables/05-source-type-field.png)
```{figure} /_images/en-us/config_guide/variables/05-source-type-field.png
:alt: Variable form with Source Type set to Model Field and source configuration highlighted

Set **Source Type** to Model Field, then specify the **Source Model** and **Source Field**.
```

**CEL Usage:** `income > 5000`

Expand Down Expand Up @@ -90,7 +94,11 @@ Calculate values using CEL expressions.
| Value Type | Number |
| Unit | years |

![Computed CEL source type configuration](/_images/en-us/config_guide/variables/08-source-type-computed.png)
```{figure} /_images/en-us/config_guide/variables/08-source-type-computed.png
:alt: Variable form with Source Type set to Computed CEL and expression field highlighted

Set **Source Type** to Computed (CEL), then enter the **CEL Expression** to calculate.
```

**CEL Usage:** `age >= 18 && age <= 65`

Expand Down Expand Up @@ -140,7 +148,11 @@ Compute values over household members, enrollments, entitlements, or events.
| **Maximum** | Number | Largest value |
| **Exists** | Yes/No | True if any member matches |

![Aggregate types dropdown](/_images/en-us/config_guide/variables/07-aggregate-types-dropdown.png)
```{figure} /_images/en-us/config_guide/variables/07-aggregate-types-dropdown.png
:alt: Aggregate Type dropdown showing Count, Sum, Average, Minimum, Maximum, and Exists options

Select an **Aggregate Type** to define how member values are combined.
```

### Aggregate Targets

Expand Down Expand Up @@ -275,7 +287,11 @@ Fixed values that can optionally be overridden per program.
| Value Type | Money |
| Unit | USD |

![Constant source type configuration](/_images/en-us/config_guide/variables/09-source-type-constant.png)
```{figure} /_images/en-us/config_guide/variables/09-source-type-constant.png
:alt: Variable form with Source Type set to Constant and default value configuration highlighted

Set **Source Type** to Constant/Parameter, then enter the **Default Value** and enable **Program Configurable** if needed.
```

**CEL Usage:** `income < poverty_line`

Expand Down