> ## 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.

# Órdenes de producción: gestión completa en A3ERP

> Consulta, crea, modifica y elimina órdenes de producción en A3ERP. Gestiona fases, productos, costes y fabricaciones a través de la API REST.

Los endpoints de órdenes de producción te ofrecen gestión completa del ciclo de vida de las órdenes de fabricación en A3ERP, incluyendo sus líneas, fases y registros de fabricación. Con esta API puedes automatizar la creación de órdenes, actualizar sus cabeceras, controlar costes y eliminar documentos sin necesidad de acceder al ERP directamente.

<Tabs>
  <Tab title="GET">
    ## Recupera todas las órdenes de producción

    Devuelve todas las órdenes de producción con los componentes asociados a cada una.

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

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

    **Ejemplo de respuesta:**

    ```json theme={null}
    {
      "Documentos": [
        {
          "IdProd": "10060",
          "codalmcon": "       1",
          "almacencon": "Productos acabados (central)",
          "codalmfab": "       1",
          "almacenfab": "Productos acabados (central)",
          "codcli": "text",
          "nomcli": "text",
          "fecha": "",
          "tipocont": "",
          "numdoc": "",
          "referencia": "text",
          "situacion": "A",
          "tipostock": "S",
          "Lineas": [
            {
              "idprod": "",
              "idlinp": "",
              "idpadre": "",
              "codalmcon": "",
              "codalmfab": "",
              "codartc": "",
              "descartc": "",
              "idfase": "0",
              "nomfase": "",
              "prcmedio": "",
              "unidadesp": "",
              "terminadoc": "",
              "terminadof": "",
              "unidadesa": "",
              "unidadesf": "",
              "unidadesc": "",
              "uniheredadas": ""
            }
          ]
        }
      ]
    }
    ```

    ***

    ## Recupera una orden de producción concreta

    Devuelve la orden de producción identificada por `{idprod}`.

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

    **Ejemplo:** `/api/ordenproduccion/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>

    ***

    ## Filtra órdenes de producción

    Devuelve las órdenes que cumplen la condición del filtro indicado.

    ```http theme={null}
    GET /api/ordenproduccion/filtro/{filtro}
    ```

    **Ejemplo:** `/api/ordenproduccion/filtro/nomcli='SPORTIF, S.A.'`

    <ParamField path="filtro" type="string" required>
      Condición de filtrado a aplicar sobre los campos de la orden.
    </ParamField>

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

    ***

    ## Recupera todas las órdenes ordenadas

    Devuelve todas las órdenes de producción ordenadas por el atributo indicado.

    ```http theme={null}
    GET /api/ordenproduccion/order/{orden}
    ```

    **Ejemplo:** `/api/ordenproduccion/order/codcli`

    <ParamField path="orden" type="string" required>
      Atributo por el que se ordenarán los resultados (p. ej. `codcli`, `fecha`).
    </ParamField>

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

    ***

    ## Filtra y ordena órdenes de producción

    Devuelve las órdenes que cumplen el filtro y las ordena por el atributo indicado.

    ```http theme={null}
    GET /api/ordenproduccion/filtro/{filtro}/orden/{orden}
    ```

    **Ejemplo:** `/api/ordenproduccion/filtro/codcli=' 1'/orden/codalmcon`

    <ParamField path="filtro" type="string" required>
      Condición de filtrado a aplicar.
    </ParamField>

    <ParamField path="orden" type="string" required>
      Atributo por el que se ordenarán los resultados.
    </ParamField>

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

    ***

    ## Fabricaciones de una orden

    Devuelve todas las fabricaciones asociadas a una orden de producción.

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

    **Ejemplo:** `/api/ordenproduccion/fabricacion/idprod/10127`

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

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

    **Ejemplo de respuesta:**

    ```json theme={null}
    {
      "Operaciones": [
        {
          "descripcion": "",
          "idlogp": "",
          "idtrab": "",
          "motivo": "",
          "codlog": "",
          "tipostock": "S",
          "fecha": "",
          "Fabricaciones": [
            {
              "idlinp": "",
              "numlin": "",
              "idlinc": "",
              "codartc": "",
              "descartc": "",
              "feccaduc": "",
              "unidadesfabricadas": "",
              "unidadesprevistas": "",
              "unidadesconsumidas": "text",
              "unidadesprevistastotal": "",
              "tiempoprevistoconsumir": "0:00:00",
              "tiempoconsumido": "0:00:00",
              "tiempoprevistototal": "0:00:01",
              "codalm": "       1",
              "descalm": "Productos acabados (central)",
              "Consumos": [
                {
                  "idlinp": "",
                  "numlin": "",
                  "fase": "",
                  "nomfase": "",
                  "idlinc": "",
                  "codarct": "",
                  "descartc": "",
                  "feccaduc": "",
                  "unidadesfabricadas": "",
                  "unidadesprevistas": "",
                  "unidadesconsumidas": "",
                  "unidadesprevistastotal": "",
                  "tiempoprevistoconsumir": "0:00:00",
                  "tiempoconsumido": "0:00:00",
                  "tiempoprevistototal": "0:00:01",
                  "codalm": "       1",
                  "descalm": "Productos acabados (central)"
                }
              ]
            }
          ]
        }
      ]
    }
    ```

    ***

    ## Fabricaciones de un trabajo concreto

    Devuelve las fabricaciones asociadas a un trabajo específico dentro de una orden de producción.

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

    **Ejemplo:** `/api/ordenproduccion/fabricacion/idprod/10127/idtrab/1`

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

    <ParamField path="idtrab" type="string" required>
      Identificador del trabajo.
    </ParamField>

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

    ***

    ## Fases de una orden

    Devuelve todas las fases de la orden de producción indicada.

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

    **Ejemplo:** `/api/ordenproduccion/fase/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="idfase" type="integer">Identificador de la fase.</ResponseField>
    <ResponseField name="idlinp" type="integer">Identificador de la línea de producción.</ResponseField>
    <ResponseField name="codart" type="string">Código del artículo.</ResponseField>
    <ResponseField name="descart" type="string">Descripción del artículo.</ResponseField>
    <ResponseField name="fase" type="string">Código identificador de la fase.</ResponseField>
    <ResponseField name="nomfase" type="string">Nombre de la fase.</ResponseField>
    <ResponseField name="previsto" type="string">Tiempo previsto.</ResponseField>
    <ResponseField name="terminado" type="string">Tiempo terminado.</ResponseField>
    <ResponseField name="tiempoc" type="string">Tiempo consumido.</ResponseField>
    <ResponseField name="tiempop" type="string">Tiempo previsto total.</ResponseField>

    ***

    ## Fases de una orden filtradas

    Devuelve las fases de una orden de producción que cumplen la condición del filtro.

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

    **Ejemplo:** `/api/ordenproduccion/fase/idprod/10100/filtro/codart=' 31'`

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

    <ParamField path="filtro" type="string" required>
      Condición de filtrado a aplicar sobre los campos de la fase.
    </ParamField>

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

    ***

    ## Actualizar costes de componentes

    Recalcula los costes de todos los componentes de la orden con los precios actuales. Este endpoint sólo afecta a la orden indicada; no actualiza la estructura del artículo en el catálogo general.

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

    **Ejemplo:** `/api/ordenproduccion/actualizarcostes/idprod/10100`

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

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

    <Note>
      Este endpoint actualiza los costes únicamente para la orden especificada. La estructura del artículo en el maestro de artículos no se modifica.
    </Note>
  </Tab>

  <Tab title="POST">
    ## Crear una orden de producción

    Crea una nueva orden de producción con los productos, fases, máquinas, operarios y componentes que le indiques en el cuerpo de la petición.

    ```http theme={null}
    POST /api/ordenproduccion
    ```

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

    **Cuerpo de la petición:**

    ```json theme={null}
    {
      "json": {
        "fecha": "text",
        "codalmcon": "text",
        "codcli": "text",
        "productos": [
          {
            "codartc": "text",
            "unidades": "text",
            "fases": [
              {
                "fase": "text",
                "nomfase": "text",
                "maquinas": [
                  {
                    "perfilmaq": "text",
                    "tiempop": "text",
                    "codmaq": "text"
                  }
                ],
                "operarios": [
                  {
                    "perfilper": "text",
                    "tiempoP": "text",
                    "codemp": "text"
                  }
                ],
                "componentes": [
                  {
                    "codartc": "text",
                    "unidades": "text",
                    "codalmcon": "text",
                    "final": "text"
                  }
                ]
              }
            ]
          }
        ]
      }
    }
    ```

    <ParamField body="json.fecha" type="string">
      Fecha de la orden de producción.
    </ParamField>

    <ParamField body="json.codalmcon" type="string">
      Código del almacén de consumo.
    </ParamField>

    <ParamField body="json.codcli" type="string">
      Código del cliente asociado a la orden.
    </ParamField>

    <ParamField body="json.productos" type="array">
      Lista de productos acabados que se fabricarán en la orden.
    </ParamField>

    <ParamField body="json.productos[].codartc" type="string">
      Código del artículo a fabricar.
    </ParamField>

    <ParamField body="json.productos[].unidades" type="string">
      Número de unidades a fabricar.
    </ParamField>

    <ParamField body="json.productos[].fases" type="array">
      Fases de producción del artículo.
    </ParamField>

    <ParamField body="json.productos[].fases[].fase" type="string">
      Código identificador de la fase.
    </ParamField>

    <ParamField body="json.productos[].fases[].nomfase" type="string">
      Nombre descriptivo de la fase.
    </ParamField>

    <ParamField body="json.productos[].fases[].maquinas" type="array">
      Máquinas asignadas a la fase.
    </ParamField>

    <ParamField body="json.productos[].fases[].operarios" type="array">
      Operarios asignados a la fase.
    </ParamField>

    <ParamField body="json.productos[].fases[].componentes" type="array">
      Componentes necesarios para la fase.
    </ParamField>

    **Respuesta exitosa:**

    ```json theme={null}
    {
      "Codigo": 1
    }
    ```

    ***

    ## Añadir una fase a una orden

    Añade una nueva fase a un producto dentro de una orden de producción existente.

    ```http theme={null}
    POST /api/ordenproduccion/fase/idprod/{idprod}/idlin/{idlin}/fase/{fase}/nomfase/{nomfase}
    ```

    **Ejemplo:** `/api/ordenproduccion/fase/idprod/10109/idlin/11817/fase/PI/nomfase/Pintar API`

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

    <ParamField path="idlin" type="string" required>
      Debe ser el `idlinp` de la línea con el producto al que se quiere añadir la fase.
    </ParamField>

    <ParamField path="fase" type="string" required>
      Código identificador de la fase a añadir.
    </ParamField>

    <ParamField path="nomfase" type="string" required>
      Nombre de la fase a 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 las fases de la orden mediante GET.
    </Note>
  </Tab>

  <Tab title="PUT">
    ## Modificar la cabecera de una orden

    Actualiza los campos de la cabecera de la orden de producción indicada.

    ```http theme={null}
    PUT /api/ordenproduccion/{idprod}
    ```

    **Ejemplo:** `/api/ordenproduccion/10111`

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

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

    **Cuerpo de la petición:**

    ```json theme={null}
    {
      "json": {
        "fecha": "text",
        "codcli": "text"
      }
    }
    ```

    <ParamField body="json.fecha" type="string">
      Nueva fecha de la orden de producción.
    </ParamField>

    <ParamField body="json.codcli" type="string">
      Nuevo código de cliente asociado a la orden.
    </ParamField>

    ***

    ## Modificar una línea de una orden

    Actualiza los datos de una línea concreta dentro de una orden de producción.

    ```http theme={null}
    PUT /api/ordenproduccion/{idprod}/linea/{idlinea}
    ```

    **Ejemplo:** `/api/ordenproduccion/10074/linea/11471`

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

    <ParamField path="idlinea" type="string" required>
      Identificador de la línea a modificar.
    </ParamField>

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

    **Cuerpo de la petición:**

    ```json theme={null}
    {
      "json": {
        "codemp": "text",
        "costefijo": "text"
      }
    }
    ```

    <ParamField body="json.codemp" type="string">
      Código del empleado asignado a la línea.
    </ParamField>

    <ParamField body="json.costefijo" type="string">
      Coste fijo asignado a la línea.
    </ParamField>
  </Tab>

  <Tab title="DELETE">
    ## Eliminar una orden de producción completa

    Elimina la orden de producción y todas sus líneas asociadas.

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

    **Ejemplo:** `/api/ordenproduccion/10111`

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

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

    <Warning>
      Esta operación es irreversible. Elimina la orden completa junto con todas sus líneas, fases y fabricaciones asociadas.
    </Warning>

    ***

    ## Eliminar una línea de una orden

    Elimina una línea específica de la orden de producción indicada.

    ```http theme={null}
    DELETE /api/ordenproduccion/{idprod}/linea/{idlinea}
    ```

    **Ejemplo:** `/api/ordenproduccion/10111/linea/11835`

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

    <ParamField path="idlinea" type="string" required>
      Identificador de la línea a eliminar.
    </ParamField>

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