> ## Documentation Index
> Fetch the complete documentation index at: https://a3erpapi.appcloud.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestión de productos en órdenes de producción A3ERP

> Consulta, añade, modifica las unidades y elimina productos (artículos acabados) dentro de las órdenes de producción de A3ERP vía API.

Los productos son los artículos acabados que se fabrican dentro de una orden de producción. A través de estos endpoints puedes consultar los productos asignados a una orden, añadir nuevos artículos acabados, modificar sus unidades previstas y eliminar fases asociadas. Cada producto se identifica dentro de la orden mediante el campo `idlinp`.

***

## Consultar los productos de una orden

Devuelve todos los productos (artículos acabados) de la orden de producción indicada.

```http theme={null}
GET /api/ordenproduccion/producto/idprod/{idprod}
```

**Ejemplo:** `/api/ordenproduccion/producto/idprod/10060`

<ParamField path="idprod" type="string" required>
  Identificador de la orden de producción.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Bearer + JWT\_token
</ParamField>

**Campos de respuesta:**

<ResponseField name="idprod" type="integer">Identificador de la orden de producción.</ResponseField>
<ResponseField name="idlinp" type="integer">Identificador de la línea del producto dentro de la orden.</ResponseField>
<ResponseField name="idpadre" type="integer">Identificador de la línea padre (si aplica).</ResponseField>
<ResponseField name="codalmcon" type="string">Código del almacén de consumo (ajustado a 8 caracteres).</ResponseField>
<ResponseField name="codalmfab" type="string">Código del almacén de fabricación (ajustado a 8 caracteres).</ResponseField>
<ResponseField name="codartc" type="string">Código del artículo componente.</ResponseField>
<ResponseField name="codartp" type="string">Código del artículo padre.</ResponseField>
<ResponseField name="codemp" type="string">Código del empleado asignado.</ResponseField>
<ResponseField name="nombre" type="string">Nombre del empleado asignado.</ResponseField>
<ResponseField name="codmaq" type="string">Código de la máquina asignada.</ResponseField>
<ResponseField name="descmaq" type="string">Descripción de la máquina asignada.</ResponseField>
<ResponseField name="descartc" type="string">Descripción del artículo componente.</ResponseField>
<ResponseField name="descartp" type="string">Descripción del artículo padre.</ResponseField>
<ResponseField name="fase" type="string">Código de la fase.</ResponseField>
<ResponseField name="idfase" type="string">Identificador numérico de la fase.</ResponseField>
<ResponseField name="nomfase" type="string">Nombre de la fase.</ResponseField>
<ResponseField name="perfilmaq" type="string">Perfil de la máquina asignada.</ResponseField>
<ResponseField name="descperfilm" type="string">Descripción del perfil de máquina.</ResponseField>
<ResponseField name="perfilper" type="string">Perfil del operario asignado.</ResponseField>
<ResponseField name="descperfilp" type="string">Descripción del perfil del operario.</ResponseField>
<ResponseField name="prcmedio" type="integer">Precio medio del artículo.</ResponseField>
<ResponseField name="unidadesp" type="integer">Unidades previstas a fabricar.</ResponseField>
<ResponseField name="situacion" type="string">Situación de la línea.</ResponseField>
<ResponseField name="terminado" type="string">Indica si la línea está terminada.</ResponseField>
<ResponseField name="terminadoc" type="string">Fecha de terminación del consumo.</ResponseField>
<ResponseField name="terminadof" type="string">Fecha de terminación de la fabricación.</ResponseField>
<ResponseField name="texto" type="string">Texto libre asociado a la línea.</ResponseField>
<ResponseField name="unidadesa" type="integer">Unidades anuladas.</ResponseField>
<ResponseField name="unidadesf" type="integer">Unidades fabricadas.</ResponseField>
<ResponseField name="unidadesc" type="integer">Unidades consumidas.</ResponseField>
<ResponseField name="uniheredadas" type="integer">Unidades heredadas de la línea padre.</ResponseField>

**Ejemplo de respuesta:**

```json theme={null}
{
  "idprod": "",
  "idlinp": "",
  "idpadre": 1,
  "codalmcon": "",
  "codalmfab": "",
  "codartc": "",
  "codartp": "text",
  "codemp": "text",
  "nombre": "text",
  "codmaq": "text",
  "descmaq": "text",
  "descartc": "",
  "descartp": "text",
  "fase": "text",
  "idfase": "text",
  "nomfase": "text",
  "perfilmaq": "text",
  "descperfilm": "text",
  "perfilper": "text",
  "descperfilp": "text",
  "prcmedio": 1,
  "unidadesp": 1,
  "situacion": "text",
  "terminado": "text",
  "terminadoc": "",
  "terminadof": "",
  "texto": "text",
  "unidadesa": 0,
  "unidadesf": 0,
  "unidadesc": 0,
  "uniheredadas": 0
}
```

***

## Añadir un producto a una orden

Añade un artículo acabado con las unidades indicadas a una orden de producción existente.

```http theme={null}
POST /api/ordenproduccion/producto/idprod/{idprod}/codart/{codart}/unidades/{unidades}
```

**Ejemplo:** `/api/ordenproduccion/producto/IdProd/10109/codart/12/unidades/10`

<ParamField path="idprod" type="string" required>
  Identificador de la orden de producción a la que se añade el producto.
</ParamField>

<ParamField path="codart" type="string" required>
  Código del artículo acabado que se añade a la orden.
</ParamField>

<ParamField path="unidades" type="integer" required>
  Número de unidades del producto que se desea añadir.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Bearer + JWT\_token
</ParamField>

**Respuesta exitosa:**

```json theme={null}
{
  "IdLin": "text"
}
```

<Note>
  El valor devuelto en `IdLin` se corresponde con el campo `idlinp` al consultar los productos de la orden mediante GET.
</Note>

***

## Cambiar las unidades de un producto

Modifica el número de unidades previstas de un producto ya existente dentro de la orden.

```http theme={null}
POST /api/ordenproduccion/producto/cambiarunidades/idprod/{idprod}/idlin/{idlin}/unidades/{unidades}
```

**Ejemplo:** `/api/ordenproduccion/producto/cambiarunidades/IdProd/10109/idlinp/11817/unidades/10`

<ParamField path="idprod" type="string" required>
  Identificador de la orden de producción.
</ParamField>

<ParamField path="idlin" type="string" required>
  Identificador de la línea del producto (`idlinp`) cuyas unidades se modificarán.
</ParamField>

<ParamField path="unidades" type="integer" required>
  Nuevo número de unidades previstas para el producto.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Bearer + JWT\_token
</ParamField>

**Respuesta exitosa:**

```
Se han cambiado las unidades del producto:{idprod}
```

***

## Eliminar una fase de un producto

Elimina una fase concreta de un producto dentro de la orden de producción indicada.

```http theme={null}
DELETE /api/ordenproduccion/fase/idprod/{idprod}/idfase/{idfase}
```

**Ejemplo:** `/api/ordenproduccion/fase/idprod/10100/idfase/10530`

<ParamField path="idprod" type="string" required>
  Identificador de la orden de producción.
</ParamField>

<ParamField path="idfase" type="string" required>
  Identificador numérico de la fase a eliminar. Puedes obtenerlo mediante la consulta de fases de la orden.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Bearer + JWT\_token
</ParamField>

<Warning>
  La eliminación de una fase es irreversible. Asegúrate de usar el `idfase` numérico y no el código de fase (`fase`).
</Warning>
