# `Cfdi.Relacionado`

`cfdi:CfdiRelacionados` — grupo de CFDI relacionados bajo un
`TipoRelacion` común.

Equivalente a la clase `Relacionado` del paquete `@cfdi/xml` en Node.
Cada grupo agrupa uno o más UUIDs (`Cfdi.Relacionado.CfdiRelacionado`).

# `t`

```elixir
@type t() :: %Cfdi.Relacionado{
  TipoRelacion: String.t() | nil,
  &quot;cfdi:CfdiRelacionado&quot;: list() | nil
}
```

# `add_relation`

Añade un UUID al grupo.

# `local_name`

```elixir
@spec local_name() :: String.t()
```

Nombre local del tag, sin namespace. Ej: `"Emisor"`.

# `namespace`

```elixir
@spec namespace() :: String.t() | nil
```

Prefijo de namespace del tag (`"cfdi"`) o `nil` si no lleva.

# `relacionados_block`

```elixir
@spec relacionados_block([t() | map()]) :: tuple() | nil
```

# `tag`

```elixir
@spec tag() :: String.t()
```

Tag XML completo (con namespace, si lo hay). Ej: `"cfdi:Emisor"`.

# `to_element`

```elixir
@spec to_element(t()) :: tuple()
```

# `to_element`

```elixir
@spec to_element(t(), iodata()) :: tuple()
```

# `to_map`

```elixir
@spec to_map(t() | nil) :: map() | nil
```

Proyecta la struct a mapa.

Opciones:
  * `:ns` — `true` (default) incluye prefijo y envuelve bajo `"cfdi:Tag"`;
    `false` devuelve solo los atributos como mapa plano.
  * `:wrap` — `true` (default) envuelve bajo la llave del tag; `false`
    devuelve solo el cuerpo.

# `to_map`

```elixir
@spec to_map(
  t() | nil,
  keyword()
) :: map() | nil
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
