# `callAllIdChidVisible` (procedure)


- **Type:** PROCEDURE
- **Deterministic:** NO
- **SQL data access:** CONTAINS SQL

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `p_sParentId` | `varchar(50)` |

## Body

_Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `callAllIdChidVisible`'`._

## Narrative

**Business context:** Recursive descendant of `callAllIdbVisible` — when a `gdsmodule` parent is hidden (`bVisible=0`), this proc cascades `bVisible=0`, `bUnTask=0`, `bJurisdictionShow=0` to every descendant in the BACK navigation tree. Used in concert with the `sAllId` rebuild family to keep visibility / jurisdiction flags coherent across the module subtree.

**What it does:** opens a cursor over `gdsmodule` children of `p_sParentId`. For each child whose own `bVisible=0`, runs `UPDATE gdsmodule SET bVisible=0, bUnTask=0, bJurisdictionShow=0 WHERE sParentId=p_sId`, then if the child has further children, recurses (`max_sp_recursion_depth=10`). Note: the visibility flag tested is on the *child*, not the parent — so the cascade only fires when a node is itself already hidden, not when its ancestor is.

**Invocation:** orphan-via-dead-chain. Only caller is `callAllIdbVisible`, which is itself orphaned (no form-master / hook / Java / other-proc caller). No direct caller anywhere — candidate for maintainer audit alongside the rest of the `callAllIdb*`/`callAllIdChid*` family.
