# CTNeat API ES_v2

# Autenticación



# LOG IN

Para autenticar a un usuario, la API generará un token de autenticación que será necesario para acceder a cada una de sus funciones. Este token tendrá una duración máxima de 60 segundos sin uso, tras lo cual será necesario generar uno nuevo para continuar utilizando la API.
### URL
`https://[server]/CTNEAT/LOGIN/{user}/{psw}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio |
| -------------------- | ------------ | ------------------------ | ----------- |
|   user               |  cadena      |    nombre del usuario con el que se quiere hacer el log in                      |       Sí      |
|   psw                |  cadena      |    contraseña del usuario                      |       Sí      |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|                       |                            |             |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.


### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        tkn.val              |      cadena        |       Token de autenticación                   |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |


###  Ejemplo de consulta
`http://ctincoming/CTNEAT/LOGIN/CTNEAT/1234`

### Ejemplo de respuesta
```json
{ "val":"F7C9403161C67E8675AC1CE8C583CCA4BDF4C5A76408C433AA9284625FF5207D" }
```

# LOG OUT

Esta función permite dar de baja el token de autenticación asociado al usuario, lo que impide que se utilice para acceder a las funciones de la API y garantiza la seguridad de la información. De este modo, se evita el acceso no autorizado a la API y se asegura la protección de los datos del usuario
### URL
`https://[server]/CTNEAT/LOGOUT/{tkn}`
### Método HTTP

<span style="background-color: RGB(247,140,58); color: white; font-weight: bold; padding: 8px;">PUT</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio |
| -------------------- | ------------ | ------------------------ | ----------- |
|   tkn                |  cadena      |   Token de autenticación |       Sí      |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|                       |                            |             |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.


### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |


###  Ejemplo de consulta
`http://ctincoming/CTNEAT/LOGOUT/F7C9403161C67E8675AC1CE8C583CCA4BDF4C5A76408C433AA9284625FF5207D`

### Ejemplo de respuesta
```json
{ "Success":{ "faultcode":"none", "faultstring":"user logged out", "detail":"" } }
```

# Artículos



# Añadir artículos

Con esta función, es posible llevar a cabo la creación de códigos internos, los cuales se utilizan como referencias de componente dentro del sistema.

NOTA:
- Si se pasa el encapsulado se requerirá el tipo de este. De lo contrario no se podrá añadir el encapsulado.
- Los tipos de ecapsulado disponibles son SMD o THT exclusivamente.
- Los encapsulados requieren el campo Encapsulado y el Tipo. La descripción es opcional, pero es mejor añadirla para dar contexto al usuario desde la aplicación.
### URL
`/CTNEAT/ITEM/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       Sí      | Cualquiera |
|   DESCRIPTION               |  cadena      |    Descripción del artículo |       No      | Cualquiera |
|   CODETYPE               |  cadena      |    Código del formato del artículo |       Sí      | <span style="color:blue">[Ver posibles valores](https://docs.ctneat.com/link/60#bkmrk-page-title)</span> |
|   PACKAGE               |  cadena      |    Descripción del artículo |       No      | Cualquiera |
|   PACKAGETYPE               |  cadena      |    Descripción del artículo |       Sí, solo si añadimos el parámetro PACKAGE | SOLO aceptamos los valores: SMD o THT |
|   PACKAGEDESCRIPTION   |  cadena    |  Descripción del encapsulado |       No      | Cualquiera (preferiblemente se debería adjuntar una descripción si el encapsulado no forma parte del sistema.) |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "DESCRIPTION":"DESCRIPCION_CODIGO_PN",
  "CODETYPE":"CODETYPE",
  "PACKAGE":"ENCAPSULADO",
  "PACKAGETYPE":"TIPO ENCAPSULADO",
  "PACKAGEDESCRIPTION":"DESCRIPCIÓN ENCAPSULADO",
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/ITEM/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "DESCRIPTION":"DESCRIPCION_CODIGO_PN",
  "CODETYPE":2,
  "PACKAGE":"0805",
  "PACKAGETYPE":"SMD",
  "PACKAGEDESCRIPTION":"DESCRIPCIÓN ENCAPSULADO SMD",
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Item code added", "detail":"Item code: CODIGO_PN successfully added" } }
```

# Modificar artículos

Mediante esta función, se puede llevar a cabo la modificación de un componente en el sistema. Es importante tener en cuenta que únicamente se pueden modificar la descripción y el formato del código de artículo, entre otros, pero no el código del componente en sí.

NOTA:
- Si se pasa el encapsulado se requerirá el tipo de este. De lo contrario no se podrá añadir el encapsulado.
- Los tipos de ecapsulado disponibles son SMD o THT exclusivamente.
- Los encapsulados requieren el campo Encapsulado y el Tipo. La descripción es opcional, pero es mejor añadirla para dar contexto al usuario desde la aplicación.

### URL
`/CTNEAT/ITEM/MODIF/{tkn}`
### Método HTTP

<span style="background-color: RGB(247,140,58); color: white; font-weight: bold; padding: 8px;">PUT</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       Sí      | Cualquiera |
|   DESCRIPTION               |  cadena      |    Descripción del artículo |       No      | Cualquiera |
|   CODETYPE               |  numérico      |    Código del formato del artículo |       Sí      | <span style="color:blue">[Ver posibles valores](https://docs.ctneat.com/link/60#bkmrk-page-title)</span> |
|   PACKAGE               |  cadena      |    Descripción del artículo |       No      | Cualquiera |
|   PACKAGETYPE               |  cadena      |    Descripción del artículo |       Sí, solo si añadimos el parámetro PACKAGE | SOLO aceptamos los valores: SMD o THT |
|   PACKAGEDESCRIPTION   |  cadena    |  Descripción del encapsulado |       No      | Cualquiera (preferiblemente se debería adjuntar una descripción si el encapsulado no forma parte del sistema.) |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "DESCRIPTION":"DESCRIPCION_CODIGO_PN",
  "CODETYPE":"CODETYPE",
  "PACKAGE":"ENCAPSULADO",
  "PACKAGETYPE":"TIPO ENCAPSULADO",
  "PACKAGEDESCRIPTION":"DESCRIPCIÓN ENCAPSULADO",
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/ITEM/MODIF/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "DESCRIPTION":"MODIF_DESCRIPCION_CODIGO_PN",
  "CODETYPE":2,
  "PACKAGE":"0805",
  "PACKAGETYPE":"SMD",
  "PACKAGEDESCRIPTION":"DESCRIPCIÓN ENCAPSULADO SMD",
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Item code modified", "detail":"Item code: CODIGO_PN successfully modified" } }
```

# Leer artículos

Con esta función, se tiene la capacidad de leer los componentes que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el código del artículo que se desea leer a través de un argumento de URL query. En caso de no especificar este código, se llevará a cabo la lectura de todos los componentes del sistema.
### URL
`/CTNEAT/ITEM/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       No (Si el código de artículo no se especifica, la API devolverá todos los artículos del sistema)      | Cualquiera |
|   LASTDATE               |  cadena      |    Fecha  |      No (Si no se especifica, se leerán todos los artículos del sistema. Si se especifica el valor, se mostrarán todos los registros entre la introducida y la actual. En cambio, si el valor introducido no se corresponde con el formato adecuado, no se realizará la búsqueda por fecha)      | Cualquiera en formato YYYYMMDDHHMMSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ItemCode: Representa el código del ítem.
- Result.Data[x].Type: Representa el tipo del ítem.
- Result.Data[x].Format: Representa el formato del ítem.
- Result.Data[x].QTY: Representa la cantidad existente del ítem.
- Result.Data[x].ActCont: Representa el número de contenedores activos del ítem.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/ITEM/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?ITEMCODE=CODIGO_PN`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "ItemCode":"CODIGO_PN", 
      "Description":"MODIF_DESCRIPCION_CODIGO_PN", 
      "Type":"REEL", 
      "Format":"H08S", 
      "QTY":0, 
      "ActCont":0 
    } 
  ] 
}
```

# REST API CTNEAT

## Introducción a la API

En esta documentación se detalla el uso de la REST API para acceder y manipular los datos del sistema de CTIncoming y CTShelf. La API proporciona una forma programática de interactuar con el sistema y automatizar tareas comunes.

Se describen todas las funciones disponibles en la API, junto con sus parámetros y ejemplos de uso. Cada función de la API está diseñada para realizar una tarea específica, como la creación de un nuevo componente, la modificación de un pedido existente o la lectura de un BOM.

La API se basa en la arquitectura REST, lo que significa que utiliza solicitudes HTTP estándar para comunicarse con el sistema. Los datos se transmiten en formato JSON, lo que permite una fácil integración con otras herramientas y sistemas.

En resumen, la API proporciona una interfaz programática para acceder y manipular los datos del sistema. En esta documentación se detallan todas las funciones disponibles, junto con ejemplos de uso, para ayudar a los desarrolladores a integrar la API en sus aplicaciones y automatizar tareas.

# Part number fabricante y part number proveedor



# Añadir Part Number fabricante

Con esta función es posible agregar una relación entre el Part Number del fabricante y el código interno del componente en el sistema.
### URL
`/CTNEAT/PN/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       Sí      | Cualquiera |
|   PNCODE               |  cadena      |    Código part number del fabricante |       Sí      | Cualquiera |
|   CODETYPE               |  numérico      |    Código del formato del artículo relacionado con este fabricante |       Sí      | <span style="color:blue">[Ver posibles valores](https://docs.ctneat.com/link/60#bkmrk-page-title)</span> |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{ 
  "ITEMCODE":"CODIGO_PN_INTERNO",
  "PNCODE":"CODIGO_PN_FABRICANTE",
  "CODETYPE":"CODETYPE"
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/PN/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "PNCODE":"CODIGO_PN_FABRICANTE",
  "CODETYPE":2
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Relation added", "detail":"Relation successfully added" } }
```

# Añadir Part Number proveedor

Con esta función es posible agregar una relación entre el Part Number del proveedor y el código interno del componente en el sistema.
### URL
`/CTNEAT/SPN/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       Sí      | Cualquiera |
|   SPNCODE               |  cadena      |    Código part number del proveedor |       Sí      | Cualquiera |
|   CODETYPE               |  cadena      |    Código del formato del artículo relacionado con este proveedor |       No      | <span style="color:blue">[Ver posibles valores](https://docs.ctneat.com/books/valores-predeterminados/page/codetype)</span> |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{ 
  "ITEMCODE":"CODIGO_PN_INTERNO",
  "SPNCODE":"CODIGO_PN_PROVEEDOR",
  "CODETYPE":"CODETYPE"
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/SPN/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{ 
  "ITEMCODE":"CODIGO_PN",
  "SPNCODE":"CODIGO_PN_PROVEEDOR",
  "CODETYPE":2
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Relation added", "detail":"Relation successfully added" } }
```

# Buscar Part Numbers de fabricante

Con esta función, se tiene la capacidad de leer los part numbers de fabricantes que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre de un MPN en concreto a través de un parámetro de URL query así como una fecha de creación de este.
En caso de no especificar este parámetro, se llevará a cabo la lectura de todos los MPN del sistema.
Si la fecha se introduce en el formato no deseado, se mostrarán todas las fechas.

### URL
`/CTNEAT/PN/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   MPN               |  cadena      |    Nombre del MPN  |       No      | Cualquiera |
|   CREATIONDATE              |  cadena      |    Fecha de creación del MPN  |       No     | Fechas en formato YYYYMMDDHHmmSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ITEMCODE: Nombre del artículo asociado al MPN.
- Result.Data[x].MPN: Nombre del MPN.
- Result.Data[x].CREATIONDATE: Fecha de creación del MPN.
- Result.Data[x].CONTAINERTYPE: Tipo del contenedor del MPN.
- Result.Data[x].CONTENTFORMAT: Formato del contenedor del MPN.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/PN/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?MPN=NOMBRE_MPN&CREATIONDATE=20250302112358`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "ITEMCODE":"CÓDIGO_ARTÍCULO_ASOCIADO", 
      "MPN":"NOMBRE_PROVEEDOR", 
      "CONTAINERTYPE":"FECHA CREACIÓN PEDIDO", 
      "CONTENTFORMAT":"FORMATO_DEVUELTO",
      "CREATIONDATE":"2025/02/11"
    } 
  ] 
}
```

# Buscar Part Numbers de Proveedor

Con esta función, se tiene la capacidad de leer los part numbers de proveedores que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre de un SPN en concreto a través de un parámetro de URL query así como una fecha de creación de este.
En caso de no especificar este parámetro, se llevará a cabo la lectura de todos los SPN del sistema.
Si la fecha se introduce en el formato no deseado, se mostrarán todas las fechas.

### URL
`/CTNEAT/SPN/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   SPN               |  cadena      |    Nombre del SPN  |       No      | Cualquiera |
|   CREATIONDATE              |  cadena      |    Fecha de creación del SPN  |       No     | Fechas en formato YYYYMMDDHHmmSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ITEMCODE: Nombre del artículo asociado al SPN.
- Result.Data[x].SPN: Nombre del SPN.
- Result.Data[x].CREATIONDATE: Fecha de creación del SPN.
- Result.Data[x].CONTAINERTYPE: Tipo del contenedor del SPN.
- Result.Data[x].CONTENTFORMAT: Formato del contenedor del SPN.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/SPN/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?SPN=NOMBRE_SPN&CREATIONDATE=20250302112358`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "ITEMCODE":"CÓDIGO_ARTÍCULO_ASOCIADO", 
      "SPN":"NOMBRE_PROVEEDOR", 
      "CONTAINERTYPE":"FECHA CREACIÓN PEDIDO", 
      "CONTENTFORMAT":"FORMATO_DEVUELTO",
      "CREATIONDATE":"2025/02/11"
    } 
  ] 
}
```

# Pedidos



# Añadir pedidos

Esta función permite añadir un pedido en el sistema.
### URL
`/CTNEAT/ORDER/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ORDERNUM               |  cadena      |    Número de pedido  |       Sí      | - |
|   LINE               |  numérico      |    Línea del pedido |       No      | - |
|   ITEMCODE               |  cadena      |    Código interno del artículo |       Sí      | -  | 
|   QTY               |  numérico      |    Cantidad pedida del artículo |       Sí      | - |
|   RECQTY               |  numérico      |    Cantidad ya recibida del artículo |       No      | - |
|   RECDATE               |  fecha      |    Fecha de recepción |       Sí      | YYYYMMDD |
|   CONF               |  booleano      |    Especifica si la línea del pedido está confirmada |       No      | 0 o 1 |
|   SUPPLIER               |  cadena      |    Proveedor del pedido  |       Sí      | - |
|   ORDERCREATIONDATE               |  fecha      |    Fecha de la creación del pedido |       Sí      | YYYYMMDD |
|   CANCELED               |  booleano      |    Especifica si la línea del pedido se ha cancelado |       No      |  0 o 1 |
|   PRICE               |  numérico      |    Precio del artículo |       No      | - |


### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
    "ORDERNUM": "ORDER_NUMBER",
    "LINE": LINE_NUMBER,
    "ITEMCODE": "CODIGO_PN_INTERNO",
    "QTY": CANTIDAD_PEDIDA,
    "RECQTY": CANTIDAD_YA_RECIBIDA,
    "RECDATE": "FECHA_DE_RECEPCION",
    "CONF": CONFIRMADO,
    "SUPPLIER": "PROVEEDOR",
    "ORDERCREATIONDATE": "FECHA_DE_CREACION_DEL_PEDIDO",
    "CANCELED": CANCELADO,
    "PRICE": PRICE
}

```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/books/formatos-respuesta/page/formato-respuesta-errorcontent)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/ORDER/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
    "ORDERNUM": "ORDER_1_API",
    "LINE": 1,
    "ITEMCODE": "CODIGO_PN",
    "QTY": 1000,
    "RECQTY": 0,
    "RECDATE": "20230610",
    "CONF": 1,
    "SUPPLIER": "CTNEAT",
    "ORDERCREATIONDATE": "20230509",
    "CANCELED": 0,
    "PRICE": 10
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Order added", "detail":"Order: CODIGO_PN-1 successfully added" } }
```

# Modificar pedidos

Con esta función, es posible llevar a cabo la modificación de los pedidos ya existentes en el sistema.
### URL
`/CTNEAT/ORDER/MODIF/{tkn}`
### Método HTTP

<span style="background-color: RGB(247,140,58); color: white; font-weight: bold; padding: 8px;">PUT</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ORDERNUM               |  cadena      |    Número de pedido  |       Sí      | - |
|   LINE               |  numérico      |    Línea del pedido |       No      | - |
|   ITEMCODE               |  cadena      |    Código interno del artículo |       No      | -  | 
|   QTY               |  numérico      |    Cantidad pedida del artículo |       No      | - |
|   RECQTY               |  numérico      |    Cantidad ya recibida del artículo |       No      | - |
|   RECDATE               |  fecha      |    Fecha de recepción |       No      | YYYYMMDD |
|   CONF               |  booleano      |    Especifica si la línea del pedido está confirmada |       No      | 0 o 1 |
|   SUPPLIER               |  cadena      |    Proveedor del pedido  |       No      | - |
|   ORDERCREATIONDATE               |  fecha      |    Fecha de la creación del pedido |       No      | YYYYMMDD |
|   CANCELED               |  booleano      |    Especifica si la línea del pedido se ha cancelado |       No      |  0 o 1 |


### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
    "ORDERNUM": "ORDER_NUMBER",
    "LINE": LINE_NUMBER,
    "ITEMCODE": "CODIGO_PN_INTERNO",
    "QTY": CANTIDAD_PEDIDA,
    "RECQTY": CANTIDAD_YA_RECIBIDA,
    "RECDATE": "FECHA_DE_RECEPCION",
    "CONF": CONFIRMADO,
    "SUPPLIER": "PROVEEDOR",
    "ORDERCREATIONDATE": "FECHA_DE_CREACION_DEL_PEDIDO",
    "CANCELED": CANCELADO
}

```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/books/formatos-respuesta/page/formato-respuesta-errorcontent)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/ORDER/MODIF/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
    "ORDERNUM": "ORDER_1_API",
    "LINE": 1,
    "ITEMCODE": "CODIGO_PN",
    "QTY": 2000,
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Order modified", "detail":"Order: CODIGO_PN-1 successfully modified" } }
```

# Buscar pedidos

Con esta función, se tiene la capacidad de leer los pedidos que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre de un pedido en concreto a través de un parámetro de URL query así como una fecha de creación de este.
En caso de no especificar estos parámetro, se llevará a cabo la lectura de todos los pedidos del sistema.
Si la fecha se introduce en el formato no deseado, se mostrarán todas las fechas.

### URL
`/CTNEAT/ORDER/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ORDERNAME               |  cadena      |    Nombre del pedido  |       No      | Cualquiera |
|   CREATIONDATE               |  cadena      |    Fecha de creación o lanzamiento del pedido  |       No     | Fechas en formato YYYYMMDDHHmmSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ORDERNUM: Nombre del pedido.
- Result.Data[x].SUPPLIER: Nombre del proveedor.
- Result.Data[x].ORDERCREATIONDATE: Fecha de creación del pedido.
- Result.Data[x].ORDER_LINES: Líneas del pedido
- Result.Data[x].ORDER_LINES[y].ITEM_CODE: Código de artículo de la línea del pedido.
- Result.Data[x].ORDER_LINES[y].CONFIRMED: Indica si la línea del pedido ha sido confirmada.
- Result.Data[x].ORDER_LINES[y].RECDATE: Fecha de recepción de los materiales de la línea del pedido.
- Result.Data[x].ORDER_LINES[y].RECQTY: Unidades recibidas.
- Result.Data[x].ORDER_LINES[y].QTY: Cantidad específica de la línea del pedido.
- Result.Data[x].ORDER_LINES[y].PRICE: Precio total de la línea del pedido.
- Result.Data[x].ORDER_LINES[y].LINE: Número de la línea del artículo del pedido.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/ORDER/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?ORDERNAME=PEDIDO&CREATIONDATE=20250302112358`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "ORDERNUM":"NOMBRE_PEDIDO", 
      "SUPPLIER":"NOMBRE_PROVEEDOR", 
      "ORDERCREATIONDATE":"FECHA CREACIÓN PEDIDO", 
      "ORDER_LINES": [
        {
        	"ITEM_CODE": "CÓDIGO ARTÍCULO",
        	"CONFIRMED": True,
        	"RECDATE": "2025/11/23",
        	"RECQTY": 100,
        	"QTY":1000,
        	"PRICE": 230.65,
          	"LINE": 1
        }
      ]
    } 
  ] 
}
```

# UID



# Añadir UID

Con esta función se puede agregar un nuevo contenedor al sistema. Si no se especifica un número de identificación única del contenedor (UID), el sistema automáticamente asignará el siguiente UID disponible.
### URL
`/CTNEAT/UID/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo |       Sí      | -  | 
|   CODETYPE               |  numérico      |    Código del formato del artículo |       Sí      | <span style="color:blue">[Ver posibles valores](https://docs.ctneat.com/link/60#bkmrk-page-title)</span> |
|   UID               |  cadena      |    Código único del contenedor |       No       | - |
|   REMQTY               |  numérico      |    Cantidad restante del contenedor |       No      | - |
|   INITQTY               |  numérico      |    Cantidad inicial del contenedor |       No      | - |
|   DATECODE               |  numérico      |    DATECODE del contenedor |       No      | YYWW |
|   LOTNUMBER               |  cadena      |    Número de lote del contenedor |       No      | - |
|   MPARTNUMBER               |  cadena      |    Part Number del fabricante |       No      | - |
|   SPARTNUMBER               |  cadena      |    Part Number del proveedor |       No      | - |
|   ORDERNUMBER               |  cadena      |    Número del pedido del contenedor |       No      | - |
|   ORDERLINE               |  numérico      |    Número de línea del pedido del contenedor|       No      | - |
|   DELIVERYNOTE               |  cadena      |    Número de albarán del contenedor |       No      | - |  
|   SUPPLIER               |  cadena      |    Proveedor  |       No      | - |   

<span style="font-size:0.9em">(si no se especifica el numero único del contenedor (UID) se definirá automaticametne con el siguiente número disponible)</span>
### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
    "ITEMCODE": "ITEM_CODE",
    "CODETYPE": CODIGO_FORMATO,
    "UID": "CODIGO_DEL_CONTENEDOR",
    "REMQTY": CANTIDAD_RESTANTE_DEL_CONTENEDOR,
    "INITQTY": CANTIDAD_INICIAL_DEL_CONTENEDOR,
    "DATECODE": "DATECODE_CONTENEDOR",
    "LOTNUMBER": "LOTE_CONTENEDOR",
    "MPARTNUMBER": "PART_NUMBER_FABRICANTE",
    "SPARTNUMBER": "PART NUMBER PROVEEDOR",
    "ORDERNUMBER": "NUMERO_PEDIDO_DEL_CONTENEDOR",
    "ORDERLINE": LINEA_PEDIDO,
    "DELIVERYNOTE": "NUM_ALBARAN_CONTENEDOR",
    "SUPPLIER": "PROVEEDOR"
}

```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/books/formatos-respuesta/page/formato-respuesta-errorcontent)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/UID/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
    "ITEMCODE": "CODIGO_PN",
    "CODETYPE": 2,
    "UID": "UID0001",
    "REMQTY": 1000,
    "INITQTY": 1000,
    "DATECODE": "2302",
    "LOTNUMBER": "LOT_1",
    "MPARTNUMBER": "PN_1",
    "SPARTNUMBER": "SPN_1",
    "ORDERNUMBER": "ORDER_NUMBER_0001",
    "ORDERLINE": 1,
    "DELIVERYNOTE": "DELNOTE01",
    "SUPPLIER": "SUPPLIER_1"
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"UID added", "detail":"UID: UID0001 successfully added" } }
```

# Modificar cantidad remanente

Esta función permite la modificación de la cantidad remanente de un contenedor específico identificado por su número de identificación única (UID).
### URL
`/CTNEAT/UID/MODIF/REMQTY/{tkn}`
### Método HTTP

<span style="background-color: RGB(247,140,58); color: white; font-weight: bold; padding: 8px;">PUT</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   UID               |  cadena      |    Código único del contenedor  |       Sí      | Cualquiera |
|   REMQTY               |  numérico      |    Cantidad restante del contenedor |       Sí      | Cualquiera |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{ 
  "UID": "CODIGO_DEL_CONTENEDOR",
  "REMQTY": CANTIDAD_RESTANTE_DEL_CONTENEDOR
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/UID/MODIF/REMQTY/8281A4D634729B979BD2070BFB21DB5C54C1E840078F0825C45337C5E383FEE6`
```json
{ 
  "UID":"UID0001",
  "REMQTY":500
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"UID Modified", "detail":"Remaining quantity of the UID: UID0001 successfully changed to 500" } }
```

# Leer UID

Con esta función es posible llevar a cabo la lectura de los datos asociados a un contenedor específico identificado por su número de identificación única (UID).
### URL
`/CTNEAT/UID/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   UID               |  cadena      |    Código único del contenedor  |       No (Si el UID no se especifica, la API devolverá todos los UID del sistema)      | Cualquiera |(https://docs.ctneat.com/books/ctneat-api/page/codetype)</span> | 
|   DATEOFRECEIPT               |  cadena      |    Fecha de recepción del UID  |       No (Si no se especifica, se leerán todos los UIDs. Si se especifica el valor, se mostrarán todos los registros entre la introducida y la actual. En cambio, si el valor introducido no se corresponde con el formato adecuado, no se realizará la búsqueda por fecha)      | Cualquiera en formato YYYYMMDDHHMMSS |


### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].UID: Representa el código del contenedor.
- Result.Data[x].ItemCode: código de artículo del producto.
- Result.Data[x].InitialQTY: Cantidad inicial del contenedor.
- Result.Data[x].RemainingQTY: Cantidad restante del contenedor.
- Result.Data[x].DateCode: DateCode del contenedor.
- Result.Data[x].LotNumber: Número de lote del contenedor.
- Result.Data[x].MPartNumber: Part Number del fabricante del contenedor.
- Result.Data[x].SPartNumber: Part Number del proveedor del contenedor.
- Result.Data[x].OrderNumber: Número del pedido del contenedor.
- Result.Data[x].LineOrderNumber: Número de la línea del pedido.
- Result.Data[x].Type: Tipo del contenedor.
- Result.Data[x].Format: Formato del contenedor.
- Result.Data[x].IDDelivNoteLine: Referencia interna del albarnán de entrega.
- Result.Data[x].User: Usuario de creación del contenedor.
- Result.Data[x].Date: Fecha de creación del contenedor.
- Result.Data[x].Supplier: Proveedor del contenedor.
- Result.Data[x].Price: Precio del lote.
- Result.Data[x].PriceNoShipping: Precio del lote sin portes.


### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/UID/READ/82567D1EEEA399427154D52F98DB1D95FFAAA6440D535B8B50C8BF7088ACE84E?UID=UID0001&DATEOFRECEIPT=20251005200000`
### Ejemplo de respuesta
```json
{
  "NRecords": 1,
  "Data": [
    {
      "UID": "UID0001",
      "ItemCode": "CODIGO_PN",
      "InitialQTY": 1000,
      "RemainingQTY": 500,
      "DateCode": "2302",
      "LotNumber": "LOT_1",
      "MPartNumber": "PN_1",
      "SPartNumber": "SPN_1",
      "OrderNumber": "ORDER_NUMBER_0001",
      "LineOrderNumber": 1,
      "DeliveryNoteNumber": "DELNOTE01",
      "Type": "REEL",
      "Format": "H08S",
      "IDDelivNoteLine": 0,
      "User": "API-CTNEAT",
      "Date": "2023-05-10T11:09:35.465",
      "Supplier": "SUPPLIER_1",
      "Price": 0,
      "PriceNoShipping": 0,
    }
  ]
}

```

# Leer nuevos UID

Con esta función se puede realizar la lectura de los nuevos contenedores creados en el sistema y que aún no han sido exportados. Su propósito es obtener los datos de los nuevos contenedores que se acaban de crear.
### URL
`/CTNEAT/UID/READ/NEWUIDS/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |


### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].UID: Representa el código del contenedor.
- Result.Data[x].ItemCode: código de artículo del producto.
- Result.Data[x].InitialQTY: Cantidad inicial del contenedor.
- Result.Data[x].RemainingQTY: Cantidad restante del contenedor.
- Result.Data[x].DateCode: DateCode del contenedor.
- Result.Data[x].LotNumber: Número de lote del contenedor.
- Result.Data[x].MPartNumber: Part Number del fabricante del contenedor.
- Result.Data[x].SPartNumber: Part Number del proveedor del contenedor.
- Result.Data[x].OrderNumber: Número del pedido del contenedor.
- Result.Data[x].LineOrderNumber: Número de la línea del pedido.
- Result.Data[x].Type: Tipo del contenedor.
- Result.Data[x].Format: Formato del contenedor.
- Result.Data[x].IDDelivNoteLine: Referencia interna del albarnán de entrega.
- Result.Data[x].User: Usuario de creación del contenedor.
- Result.Data[x].Date: Fecha de creación del contenedor.
- Result.Data[x].Supplier: Proveedor del contenedor.


### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/UID/READ/NEWUIDS/82567D1EEEA399427154D52F98DB1D95FFAAA6440D535B8B50C8BF7088ACE84E`
### Ejemplo de respuesta
```json
{
  "NRecords": 1,
  "Data": [
    {
      "UID": "UID0001",
      "ItemCode": "CODIGO_PN",
      "InitialQTY": 1000,
      "RemainingQTY": 1000,
      "DateCode": "2302",
      "LotNumber": "LOT_1",
      "MPartNumber": "PN_1",
      "SPartNumber": "SPN_1",
      "OrderNumber": "ORDER_NUMBER_0001",
      "LineOrderNumber": 1,
      "DeliveryNoteNumber": "DELNOTE01",
      "Type": "REEL",
      "Format": "H08S",
      "IDDelivNoteLine": 0,
      "User": "API-CTNEAT",
      "Date": "2023-05-10T11:09:35.465",
      "Supplier": "SUPPLIER_1",
    }
  ]
}


```

# BOM



# Añadir BOM

Esta función permite la inclusión de un listado de materiales de un producto, también conocido como "BOM" (Bill of Materials, por sus siglas en inglés), en el sistema.
### URL
`/CTNEAT/BOM/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   BOMCode               |  cadena      |    Código de la BOM |       Sí      | -  | 
|   Description               |  cadena      |   Descripción de la BOM |       No       | - |
|   Disabled               |  booleano      |    Estado de la BOM |       No      | 0 o 1 |
|   CUSTOMERNAME               |  cadena      |    Nombre del cliente de la BOM |       No      | - |
|   BOM               |  JSON      |    JSON con el contenido de la BOM |       Sí      | especificado a continuación |

##### Elementos BOM
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ItemCode               |  cadena      |    Código interno del artículo |       Sí      | -  | 
|   Units               |  numérico      |   Unidades del artículo en la BOM |       Sí       | - |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
  "BOMCode": "CODIGO_BOM",
  "Description": "DESCRIPCION_BOM",
  "Disabled": BOM_DESHABILITADA,
  "CUSTOMERNAME": "CLIENTE",
  "BOM": [
    {
      "ItemCode": "CODIGO_PN_INTERNO",
      "Units": UNIDADES
    },
    {
      "ItemCode": "CODIGO_PN_INTERNO",
      "Units": UNIDADES
    }
  ]
}


```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/books/formatos-respuesta/page/formato-respuesta-errorcontent)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/BOM/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
  "BOMCode": "BOM_API_1",
  "Description": "BOM IMPORTED FROM API",
  "Disabled": 0,
  "CUSTOMERNAME": "CTNEAT",
  "BOM": [
    {
      "ItemCode": "CODIGO_PN",
      "Units": 2
    },
    {
      "ItemCode": "CODIGO_PN_2",
      "Units": 1
    }
  ]
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"BOM added", "detail":"BOM: BOM_API_1 successfully added" } }
```

# Modificar BOM

Con esta función es posible realizar modificaciones en un listado de materiales de un producto, o BOM, previamente agregado al sistema.
### URL
`/CTNEAT/BOM/MODIF/{tkn}`
### Método HTTP

<span style="background-color: RGB(247,140,58); color: white; font-weight: bold; padding: 8px;">PUT</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   BOMCode               |  cadena      |    Código de la BOM |       Sí      | -  | 
|   Description               |  cadena      |   Descripción de la BOM |       No       | - |
|   Disabled               |  booleano      |    Estado de la BOM |       No      | 0 o 1 |
|   CUSTOMERNAME               |  cadena      |    Nombre del cliente de la BOM |       No      | - |
|   BOM               |  JSON      |    JSON con el contenido de la BOM |       No      | especificado a continuación |

##### Elementos BOM
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ItemCode               |  cadena      |    Código interno del artículo |       Sí      | -  | 
|   Units               |  numérico      |   Unidades del artículo en la BOM |       Sí       | - |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
  "BOMCode": "CODIGO_BOM",
  "Description": "DESCRIPCION_BOM",
  "Disabled": BOM_DESHABILITADA,
  "CUSTOMERNAME": "CLIENTE",
  "BOM": [
    {
      "ItemCode": "CODIGO_PN_INTERNO",
      "Units": UNIDADES
    },
    {
      "ItemCode": "CODIGO_PN_INTERNO",
      "Units": UNIDADES
    }
  ]
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/BOM/MODIF/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
  "BOMCode": "BOM_API_1",
  "Description": "BOM MODIFIED FROM API",
  "Disabled": 0,
  "CUSTOMERNAME": "CTNEAT",
  "BOM": [
    {
      "ItemCode": "CODIGO_PN",
      "Units": 0
    },
    {
      "ItemCode": "CODIGO_PN_2",
      "Units": 3
    }
  ]
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"BOM modified", "detail":"BOM: BOM_API_1 successfully modified" } }
```

# Leer BOM

Esta función permite la lectura de un listado de materiales de un producto, o BOM, previamente agregado al sistema. Si no se especifica el código del BOM mediante un parámetro en la URL, se leerán todos los BOM del sistema.

### URL
`/CTNEAT/BOM/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   BOMCode               |  cadena      |    Código de la BOM  |       No (Si el código de BOM no se especifica, la API devolverá todas las BOM del sistema)      | Cualquiera |
|   BOMDATE     |  número   |    Fecha del BOM  |       No (Si el código de BOM no se especifica, la API devolverá todas las BOM del sistema)      | Cualquiera con formato YYYYMMDDHHmmSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].BOMCode: Representa el código de la BOM.
- Result.Data[x].Description: Descripción de la BOM.
- Result.Data[x].Disabled: Estado de la BOM.
- Result.Data[x].NOfItems: Número de artículos diferentes de la BOM.
- Result.Data[x].BOM: Matríz que contiene los diferentes artículos de la BOM.
- Result.Data[x].BOM[n].ItemCode: Código interno del artículo.
- Result.Data[x].BOM[n].Units: Unidades del artículo en la BOM.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/BOM/READ/2CB5C9AE031E4E0B2A98143637EBCAEF77B2E606F03975C67C3B30584BBEEFAF?BOMCode=BOM_API_1`
### Ejemplo de respuesta
```json
{
  "NRecords": 1,
  "Data": [
    {
      "BOMCode": "BOM_API_1",
      "Description": "BOM MODIFIED FROM API",
      "CreationDate": "20230510",
      "Disabled": false,
      "NOfItems": 2,
      "BOM": [
        {
          "ItemCode": "CODIGO_PN",
          "Units": 0
        },
        {
          "ItemCode": "CODIGO_PN_2",
          "Units": 3
        }
      ]
    }
  ]
}

```

# Ordenes de trabajo



# Añadir orden de trabajo

Con esta función es posible agregar una nueva orden de trabajo al sistema. Es posible crear la orden a partir de un listado de materiales de un producto (BOM) ya existente o bien, mediante la inclusión directa de los códigos de componente necesarios.
### URL
`/CTNEAT/WO/ADD/{tkn}`
### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   WOCode               |  cadena      |    Código de la BOM |       Sí      | -  | 
|   Description               |  cadena      |   Descripción de la BOM |       No       | - |
|   productionLine               |  cadena      |    Línea de producción de la orden |       No      |- |
|   LaunchDate               |  fecha      |    Fecha de lanzamiento de la orden |       No      | YYYYMMDD |
|   BOM               |  JSON      |    JSON con el contenido de la orden |       Sí      | especificado a continuación |

##### Elementos BOM
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ItemCode               |  cadena      |    Código interno del artículo o código de la BOM |       Sí      | -  | 
|   Units               |  numérico      |   Unidades del artículo o de la BOM |       Sí       | - |

<span style="font-size:0.9em">(Se puede lanzar una orden de trabajo uniendo BOM con códigos de artículos sueltos tal y como se muestra en el ejemplo)</span>
### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type                  |        Tipo de contenido de la solicitud                    |    Sí         |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
  "WOCode": "CODIGO_ORDENTRABAJO",
  "Description": "DESCRIPCION_DE_LA_OT",
  "productionLine": "LINEA_DE_PRODUCCION",
  "LaunchDate": "FECHA_DE_LANZAMIENTO",
  "BOM": [
    {
      "ItemCode": "CODIGO_PN_INTERNO_O_CODIGO_BOM",
      "Units": UNIDADES
    },
    {
      "ItemCode": "CODIGO_PN_INTERNO_O_CODIGO_BOM",
      "Units": UNIDADES
    }
  ]
}


```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/books/formatos-respuesta/page/formato-respuesta-errorcontent)</span> |

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CTNEAT/WO/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`
```json
{
  "WOCode": "WO_API_1",
  "Description": "WO DESCRIPTION",
  "productionLine": "L-1",
  "LaunchDate": "20230510",
  "BOM": [
    {
      "ItemCode": "BOM_API_1",
      "Units": 3
    },
    {
      "ItemCode": "CODIGO_PN",
      "Units": 2
    }
  ]
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Work order added", "detail":"Work order: WO_API_1 successfully added" } }
```

# Albaranes



# Leer albaranes

Esta función permite la lectura de los albaranes registrados en el sistema. Si no se especifica el número de albarán mediante un parámetro en la URL, se leerán todos los albaranes del sistema.
### URL
`/CTNEAT/DELYNOTE/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   DELYNOTENUMBER               |  cadena      |    Número de albarán  |       No (Si no se especifica, se leerán todos los albaranes)      | Cualquiera |
|   DELYNOTEDATE               |  cadena      |    Fecha del albarán  |      No (Si no se especifica, se leerán todos los albaranes. Si se especifica el valor, se mostrarán todos los registros entre la introducida y la actual. En cambio, si el valor introducido no se corresponde con el formato adecuado, no se realizará la búsqueda por fecha)      | Cualquiera en formato YYYYMMDDHHMMSS |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].DelivNoteNumber: Representa el número de albarán.
- Result.Data[x].Supplier: Proveedor del albarán.
- Result.Data[x].DelivNoteCreationDate: Fecha de creación del albarán.
- Result.Data[x].DelivNoteCreationUser: Usuario de creación del albarán
- Result.Data[x].NOfLines: Número de líneas del albarán.
- Result.Data[x].currentDeliveryNoteNumber: Matriz que contiene los registros de líneas del albarán.
- Result.Data[x].currentDeliveryNoteNumber[n].ItemCode: Código del ítem.
- Result.Data[x].currentDeliveryNoteNumber[n].QTYRecived: Cantidad recibida del artículo
- Result.Data[x].currentDeliveryNoteNumber[n].DelivNoteLineCreationDate: Fecha de la recepción de la línea.
- Result.Data[x].currentDeliveryNoteNumber[n].DelivNoteLineCreationUser: Usuario de creación de la línea.
- Result.Data[x].currentDeliveryNoteNumber[n].IDDelivNoteLine: Identificador interno de la línea.
- Result.Data[x].currentDeliveryNoteNumber[n].OrderName: Nombre interno del pedido asociado.
- Result.Data[x].currentDeliveryNoteNumber[n].OrderLineNum: Identificador interno del pedido asociado.
- Result.Data[x].currentDeliveryNoteNumber[n].OrderLineId: Identificador interno del pedido asociado.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/DELYNOTE/READ/E994D8C3B99915A68CB9CC502B6CD5300857BA04D3E696BDFE70C02BBFE6A537?DELYNOTENUMBER=001259&DELYNOTEDATE=20251102103023`
### Ejemplo de respuesta
```json
{
    "NRecords": 1,
    "Data": [
        {
            "DelivNoteNumber": "001259",
            "Supplier": "CTNEAT_SUPP",
            "DelivNoteCreationDate": "2023-05-10T10:17:40.362",
            "DelivNoteCreationUser": "admin",
            "NOfLines": 2,
            "currentDeliveryNoteNumber": [
                {
                    "ItemCode": "CODIGO_PN",
                    "QTYRecived": 3,
                    "DelivNoteLineCreationDate": "2023-05-10T10:17:40.367",
                    "DelivNoteLineCreationUser": "",
                    "IDDelivNoteLine": 2219,
                    "OrderName": "",
                },
                {
                    "ItemCode": "CODIGO_PN_2",
                    "QTYRecived": 5,
                    "DelivNoteLineCreationDate": "2023-05-10T10:19:23.153",
                    "DelivNoteLineCreationUser": "",
                    "IDDelivNoteLine": 2220,
                    "OrderName": "",
                  	"OrderLineId": 109,
                    "OrderLineNum": 3
                }
            ]
        }
    ]
}



```

# Clientes



# Añadir nuevo cliente

Esta función permite añadir un nuevo **cliente** en el sistema.

---

### URL
`/CTNEAT/CUSTOMER/ADD/{tkn}`

---

### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>

---

### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| :-------------------- | :------------ | :------------------------ | :----------- | :----------- |
| **CUSTOMERNIF** | cadena | NIF del cliente | Sí | cualquiera |
| **CUSTOMERNAME** | cadena | Nombre del cliente | Sí | cualquiera |

---

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| :--------------------- | :-------------------------- | :----------- |
| **Content-Type** | Tipo de contenido de la solicitud | Sí |

---
### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent, SuccessContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

---

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

---

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: **application/json**

URL de la solicitud:
`http://ctincoming/CTNEAT/CUSTOMER/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`

Descripción del cuerpo de la solicitud:
```json
{
  "CUSTOMERNIF": "NIFDELETRASYNÚMEROS",
  "CUSTOMERNAME": "NOMBRE"
}
````

---

### Ejemplo de respuesta
```json
{ "Success":true, 
  "fault":
 { 
    		"faultcode":"", 
    		"faultstring":"Customer added", 
    		"detail":"Customer nombre_1 successfully added" 
  }
}
````

# Buscar clientes

Con esta función, se tiene la capacidad de leer los clientes que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre de un cliente en concreto a través de un parámetro de URL query.
También se puede proporcionar el identificador de un cliente de nuestro sistema.
No obstante, no se recomienda usar los dos parámetros a la vez en la misma llamada. En ese caso, prevalecerá el nombre del cliente por encima del valor del identificador.
En caso de no especificar este parámetro, se llevará a cabo la lectura de todos los clientes del sistema.
### URL
`/CTNEAT/CUSTOMER/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   CUSTOMERNAME               |  cadena      |    Nombre del cliente  |       No (Si el nombre no se especifica, la API devolverá todos los clientes del sistema)      | Cualquiera |
|   CUSTOMERID               |  numérico      |    Identificador del cliente  |       No      | Valores enteros de 0 a 999999999 |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].Address: Es la dirección física.
- Result.Data[x].City: Es la ciudad.
- Result.Data[x].Email: Es el correo electrónico.
- Result.Data[x].CustomerName: Es el nombre comercial.
- Result.Data[x].NIF: Es el NIF.
- Result.Data[x].PostalCode: Es el código postal.
- Result.Data[x].State: Es la província.
- Result.Data[x].PhoneNumber: Es el número de teléfono.
- Result.Data[x].Web: Es la página web.
- Result.Data[x].CustomerId: Es el identificador del cliente.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/CUSTOMER/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?CUSTOMERNAME=NOMBRE_CLIENTE`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "CustomerName":"NOMBRE_CLIENTE", 
      "NIF":"NIF1234567", 
      "Address":"DIRECCIÓN", 
      "PostalCode":"CP000", 
      "City":"CIUDAD", 
      "State":"ESTADO O PROVÍNCIA",
      "Email":"EMAIL",
      "PhoneNumber":"931001000"
      "Web":"www.una-url.com"
    } 
  ] 
}
```

# Proveedores / Fabricantes

En este módulo se pueden añadir y leer tanto proveedores como fabricantes.

# AÑADIR FABRICANTE / PROVEEDOR

Esta función permite añadir un nuevo **proveedor** o **fabricante** en el sistema.
Para el sistema establecido, ambos tipos se tratan en la misma tabla por lo que, para diferenciarlos se deberá dar valor a uno de los campos establecidos como parámetro de la llamada.
No obstante, un mismo registro puede ser ambos tipos.

---

### URL
`/CTNEAT/SUPPLIER/ADD/{tkn}`

---

### Método HTTP

<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>

---

### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Formato del valor |
| :-------------------- | :------------ | :------------------------ | :----------- | :----------- |
| **NAME** | cadena (ANSI) | Nombre del proveedor/fabricante | Sí | - |
| **NIF** | cadena (ANSI) | NIF/CIF del proveedor/fabricante | Sí | - |
| **ADDRESS** | cadena (ANSI) | Dirección postal | No | - |
| **POSTALCODE** | cadena (ANSI) | Código postal | No | - |
| **CITY** | cadena (ANSI) | Ciudad | No | - |
| **STATE** | cadena (ANSI) | Provincia | No | - |
| **EMAIL** | cadena (ANSI) | Correo electrónico | No | - |
| **TELEPHONE** | cadena (ANSI) | Número de teléfono | No | - |
| **WEBSITE** | cadena (ANSI) | Página web | No | - |
| **ISSUPPLIER** | booleano | Indica si es un proveedor | No | 0 o 1 (Siendo 0 "false" y 1 "true")|
| **ISMANUFACTURER** | booleano | Indica si es un fabricante | No | 0 o 1 (Siendo 0 "false" y 1 "true")|

---

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| :--------------------- | :-------------------------- | :----------- |
| **Content-Type** | Tipo de contenido de la solicitud | Sí |

---

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent, SuccessContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

---

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

---

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: **application/json**

Descripción del cuerpo de la solicitud:
```json
{
  "NAME": "NOMBRE_PROVEEDOR_O_FABRICANTE",
  "NIF": "NIF_O_CIF",
  "ADDRESS": "DIRECCION_POSTAL",
  "POSTALCODE": "CODIGO_POSTAL",
  "CITY": "CIUDAD",
  "STATE": "PROVINCIA",
  "EMAIL": "CORREO_ELECTRONICO",
  "TELEPHONE": "TELEFONO",
  "WEBSITE": "PAGINA_WEB",
  "ISSUPPLIER": 1,
  "ISMANUFACTURER": 0
}

```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Supplier / manufacturer added", "detail":"Entry NOMBRE_PROVEEDOR_O_FABRICANTE successfully added" } }
```

# OBTENER PROVEEDORES

Con esta función, se tiene la capacidad de leer los proveedores que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre del proveedor que se desea leer a través de un parámetro de URL query. En caso de no especificar este parámetro, se llevará a cabo la lectura de todos los proveedores del sistema.
### URL
`/CTNEAT/SUPPLIER/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   NAME               |  cadena      |    Nombre del proveedor  |       No (Si el nombre no se especifica, la API devolverá todos los proveedores del sistema)      | Cualquiera |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ADDRESS: Es la dirección física.
- Result.Data[x].CITY: Es la ciudad.
- Result.Data[x].EMAIL: Es el correo electrónico.
- Result.Data[x].NAME: Es el nombre comercial.
- Result.Data[x].NIF: Es el NIF.
- Result.Data[x].POSTALCODE: Es el código postal.
- Result.Data[x].STATE: Es la província.
- Result.Data[x].TELEPHONE: Es el número de teléfono.
- Result.Data[x].WEBSITE: Es la página web.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/SUPPLIER/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?NAME=NOMBRE_PROVEEDOR`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "NAME":"NOMBRE_COMECIAL", 
      "NIF":"NIF1234567", 
      "ADDRESS":"DIRECCIÓN", 
      "POSTALCODE":"CP000", 
      "CITY":"CIUDAD", 
      "STATE":"ESTADO O PROVÍNCIA",
      "EMAIL":"EMAIL",
      "TELEPHONE":"931001000"
      "WEBSITE":"www.una-url.com"
    } 
  ] 
}
```

# OBTENER FABRICANTES

Con esta función, se tiene la capacidad de leer los fabricantes que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el nombre del fabricante que se desea leer a través de un parámetro de URL query. En caso de no especificar este parámetro, se llevará a cabo la lectura de todos los fabricantes del sistema.
### URL
`/CTNEAT/MANUFACTURER/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   NAME               |  cadena      |    Nombre del fabricante  |       No (Si el nombre no se especifica, la API devolverá todos los fabricantes del sistema)      | Cualquiera |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ADDRESS: Es la dirección física.
- Result.Data[x].CITY: Es la ciudad.
- Result.Data[x].EMAIL: Es el correo electrónico.
- Result.Data[x].NAME: Es el nombre comercial.
- Result.Data[x].NIF: Es el NIF.
- Result.Data[x].POSTALCODE: Es el código postal.
- Result.Data[x].STATE: Es la província.
- Result.Data[x].TELEPHONE: Es el número de teléfono.
- Result.Data[x].WEBSITE: Es la página web.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/MANUFACTURER/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?NAME=NOMBRE_FABRICANTE`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    { 
      "NAME":"NOMBRE_COMECIAL", 
      "NIF":"NIF1234567", 
      "ADDRESS":"DIRECCIÓN", 
      "POSTALCODE":"CP000", 
      "CITY":"CIUDAD", 
      "STATE":"ESTADO O PROVÍNCIA",
      "EMAIL":"EMAIL",
      "TELEPHONE":"931001000"
      "WEBSITE":"www.una-url.com"
    } 
  ] 
}
```

# Ventas

En este capítulo se gestionan las ventas del sistema

# Añadir nueva venta

Con esta función, es posible llevar a cabo la creación de ventas así como sus productos asociados y sus fechas de entrega.

NOTA:
- Si el producto no existe en la base de datos se devolverá un error y toda la transacción será cancelada. Se recomienda antes usar el endpoint ITEM/READ para comprobar que el producto existe realmente.
- Las fechas han de estar en el formato especificado.
- La venta se puede crear con nombre de cliente o su identificador del sistema. Pero uno de los dos deberá ser añadido pese a que se indican como NO OBLIGATORIO.
- Se recomienda antes usar el endpoint CUSTOMER/READ para validar el nombre del cliente.

IMPORTANTE
- Si el producto introducido es un artículo, se creará una estructura con el nombre PK-CODIGOVENTA-PRODUCTO-1.

### URL
`/CTNEAT/SALEORDER/ADD/{tkn}`

### Método HTTP
<span style="background-color: RGB(22,216,80); color: white; font-weight: bold; padding: 8px;">POST</span>


### Parámetros de la solicitud
#### Parámetros de la venta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   CODIGOVENTA        |  cadena      |    Código de la venta    |       Sí    | Cualquiera        |
|   FECHACREACION      |  cadena      |    Fecha de la venta |    Sí    | Ha de ser una string con el formato YYYYMMDDHHmmSS |
|   REFERENCIACLIENTE  |  cadena      |    Código de la venta para el cliente |       No      | Cualquiera |
|   NOMBRECLIENTE      |  cadena      |   Nombre del cliente |       No      | Cualquiera que esté entre los que hay almacenados en el sistema |
|   IDCLIENTE      |  numérico   |   Identificador del cliente |       No      | Cualquiera que esté entre los que hay almacenados en el sistema |
|   LINEAS             |  Lista de objetos   |    Líneas asociadas a la venta |       No      | Cualquiera que tenga el formato de la tabla de parámetros de la línea de la venta |

#### Parámetros de la Línea de la venta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   PRODUCTO           |  cadena      |    Código del producto asociado a la venta    |       Sí    | Cualquiera  que ya exista en la base de datos    |
|   UNIDADES           |  numérico    |    Unidades necesarias del producto  |    Sí       | Números positivos enteros |
|   VERSIONPRODUCTO    |  cadena      |    Versión del producto seleccionado   |       No      | Versión del producto que aparece en el sistema. Si no se informa el campo, se añadirá la versión por defecto (v0) |
|   PRECIO             |  numérico    |   Precio de la línea     |     Sí    | Cualquiera que no sea negativo con el siguiente formato 256.36 (9999999999.9999) |
|   FECHAS           |  Lista de objetos      |  Fechas de entrega asociadas a la venta |       No      | Cualquiera que cumpla los requisitos del objeto de la tabla de Parámetros de la fecha de entrega |

#### Parámetros de la fecha de entrega
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   FECHAENTREGA       |  cadena      |  Fecha de la entrega correspondiente a la línea de la venta  |   Sí    | Ha de ser una string con el formato YYYYMMDDHHmmSS |
|   UNIDADES           |  numérico    |    Unidades de la entrega  |    Sí       | Números positivos enteros |
|   PRECIO           |  numérico    |    Precio de la entrega  |    Sí       | Valores numéricos positivos. |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type      |  Tipo de contenido de la solicitud   |    Sí  |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
	"CODIGOVENTA": "NÚMERO VENTA",
	"FECHACREACION": "YYYYMMDDHHmmSS",
	"REFERENCIACLIENTE": "CÓDIGO_CLIENTE",
	"NOMBRECLIENTE": "CLIENTE",
	"LINEAS": [{
		"PRODUCTO": "CÓDIGO PRODUCTO",
		"UNIDADES": 50,
		"VERSIONPRODUCTO": "VERSIÓN DEL PRODUCTO",
		"PRECIO": 125.25, 
		"FECHAS": [{
			"FECHAENTREGA": "YYYYMMDDHHmmSS",
			"UNIDADES": 50,
          	"PRECIO": 125.25
          }]	
    }]
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta
| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea        |     	Alguno de los parámetros pasados no es correcto   |
|     500             |            Error interno           |     	Error en el servidor             |
|     401             |            Unauthorized            |     	El usuario no está autenticado             |

###  Ejemplo de consulta
#### URL
`http://ctincoming/CTNEAT/SALEORDER/ADD/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`

#### Objeto de entrada
```json
{
	"CODIGOVENTA": "V-0001",
	"FECHACREACION": "20250410000000",
	"REFERENCIACLIENTE": "SP-098-REF",
	"NOMBRECLIENTE": "CLIENTE",
	"LINEAS": [{
		"PRODUCTO": "PROD_0001",
		"UNIDADES": 100,
		"VERSIONPRODUCTO": "v0",
		"PRECIO": 230.65, 
		"FECHAS": [{
			"FECHAENTREGA": "20250410000000",
			"UNIDADES": 50,
          	"PRECIO": 230.65
        }]	
    }]
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Sale order has been added", "detail":"Sale order: V-0001 successfully added" } }
```

# Modificar venta

Con esta función, es posible llevar a cabo la modificación de algunos de los parámetros de una venta así como sus productos asociados y sus fechas de entrega.

Hay que tener en cuenta que se podrán añadir nuevas líneas de producto y nuevas fechas de entrega para estas, siemrpe y cuando no se superen las unidades totales del producto a entregar. En cuyo caso, devolverá un error.

En la adición de nuevos productos, no se pueden añadir productos que ya forma parte de la venta, pues el hacer esta acción devolverá un error.

No obstante, es posible modificar los siguientes parámetros:
- Referencia del cliente en la venta.
- Precio del producto en una línea ya existente.
- Añadir o eliminar una línea existente.
- Añadir o eliminar fechas de entrega de una línea existente.
- Añadir nuevas fechas de entrega a una línea existente.

NOTA:
- Se recomienda obtener la venta antes de modificar.
- Se recomienda pasar el objeto principal con TODOS los ítems anidados para evitar perder datos (líneas y fechas de entrega anteriores y nuevas).
- Para eliminar uno de los objetos anidados bastará con que no aparezca en el objeto de la request. Este se creará de nuevo con los ítems que se hayan proporcionado.

IMPORTANTE
- Si el producto introducido es un artículo, se creará una estructura con el nombre PK-CODIGOVENTA-PRODUCTO-1.

### URL
`/CTNEAT/SALEORDER/UPDATE/{tkn}`

### Método HTTP
<span style="background-color: RGB(222,112,10); color: white; font-weight: bold; padding: 8px;">PUT</span>

### Parámetros de la solicitud
#### Parámetros de la venta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   CODIGOVENTA        |  cadena      |    Código de la venta    |       Sí    | Cualquiera previamente generado en el sistema. Este campo no es posible modificarlo.      |
|   REFERENCIACLIENTE  |  cadena      |    Código de la venta para el cliente |       No      | Cualquiera |
|   LINEAS             |  Lista de objetos   |    Líneas asociadas a la venta |       No      | Cualquiera que tenga el formato de la tabla de parámetros de la línea de la venta |

#### Parámetros de la Línea de la venta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   PRODUCTO           |  cadena      |    Código del producto asociado a la venta    |       Sí    | Cualquiera        |
| VERSIONPRODUCTO | cadena | Versión del producto | Sí | La versión correspondiente o v0 que es la que se añade por defecto en todos los productos del sistema |
|   UNIDADES           |  numérico    |    Unidades necesarias del producto  |    Sí       | Números positivos enteros  |
|   PRECIO             |  numérico    |   Precio de la línea     |     Sí    | Cualquiera que no sea negativo con formato 256.36 (9999999999.9999) |
|   FECHAS           |  Lista de objetos      |  Fechas de entrega asociadas a la venta |       No      | Cualquiera que cumpla los requisitos del objeto de la tabla de Parámetros de la fecha de entrega |

#### Parámetros de la fecha de entrega
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   FECHAENTREGA       |  cadena      |  Fecha de la fecha de entrega  |   Sí    | Ha de ser una string con el formato YYYYMMDDHHmmSS |
|   UNIDADES           |  numérico    |    Unidades de la fecha de entrega  |    Sí       | Números positivos enteros |
|   PRECIO             |  numérico    |   Precio de la fecha de entrega     |     Sí    | Cualquiera que no sea negativo con formato 256.36 (9999999999.9999) |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type      |  Tipo de contenido de la solicitud   |    Sí  |

### Cuerpo de la solicitud

Formato del cuerpo de la solicitud: application/json

Descripción del cuerpo de la solicitud:
```json
{
	"CODIGOVENTA": "NÚMERO VENTA",
	"REFERENCIACLIENTE": "CÓDIGO_CLIENTE",
	"LINEAS": [{
    	"PRODUCTO": "CÓDIGO PRODUCTO",
        "VERSIONPRODUCTO": "VERSIÓN DEL PRODUCTO",
		"UNIDADES": 1000,
		"PRECIO": 125.25, 
		"FECHAS": [
          {
        	"FECHAENTREGA": "YYYYMMDDHHmmSS",
          	"UNIDADES": 50,
            "PRECIO": 25.25, 
          },
          {
        	"FECHAENTREGA": "YYYYMMDDHHmmSS",
          	"UNIDADES": 40,
            "PRECIO": 100
          }
        ]	
    }]
}
```

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta
| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea        |     	Alguno de los parámetros pasados no es correcto   |
|     500             |            Error interno           |     	Error en el servidor             |
|     401             |            Unauthorized            |     	El usuario no está autenticado             |

###  Ejemplo de consulta
#### URL
`http://ctincoming/CTNEAT/SALEORDER/UPDATE/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868`

#### Objeto de entrada
```json
{
	"CODIGOVENTA": "V-0001",
	"REFERENCIACLIENTE": "SP-098-REF",
	"LINEAS": [{
		"PRODUCTO": "PROD_0001",
        "VERSIONPRODUCTO": "v1",
		"UNIDADES": 100,
		"PRECIO": 230.65, 
		"FECHAS": [
          {
        	"FECHAENTREGA": "20260120030325",
          	"UNIDADES": 50
          },
          {
        	"FECHAENTREGA": "20260120030325",
          	"UNIDADES": 50
          }
        ]	
	}]
}
```
### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Sale order has been modified", "detail":"Sale order: V-0001 successfully updated" } }
```

# Eliminar una venta

Con esta función, es posible eliminar una venta y todas sus asociaciones a productos o fechas de entrega.
Este proceso es irreversible, por lo que, si se elimina una venta no habrá forma de recuperarla.

### URL
`/CTNEAT/SALEORDER/DELETE/{tkn}`

### Método HTTP
<span style="background-color: RGB(234,2,2); color: white; font-weight: bold; padding: 8px;">DELETE</span>

### Parámetros de la solicitud
#### Parámetros de la venta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | -----------       |
|   CODIGOVENTA        |  cadena      |    Código de la venta    |       Sí    | Cualquiera previamente generado en el sistema. |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |
|     Content-Type      |  Tipo de contenido de la solicitud   |    Sí  |

### Cuerpo de la solicitud
Esta llamada no tiene cuerpo de solicitud, solo una query añadida en la URL.

### Parámetros de la respuesta
| Nombre del parámetro | Tipo de dato | Descripción del parámetro |Formato|
| -------------------- | ------------ | ------------------------ | ------------------------ |
|        ErrorContent              |      JSON        |       Json con la descripción del resultado de la operación                   | <span style="color:blue">[Formato ErrorContent](https://docs.ctneat.com/link/64#bkmrk-elementos-de-errorco)</span> |

### Códigos de estado de la respuesta
| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea        |     	Alguno de los parámetros pasados no es correcto   |
|     500             |            Error interno           |     	Error en el servidor             |
|     401             |            Unauthorized            |     	El usuario no está autenticado             |

###  Ejemplo de consulta
#### URL
`http://ctincoming/CTNEAT/SALEORDER/DELETE/6A201F1F5147079FF9CA80DCDBB032AB386905091BC973B53F50E6493EC53868?V0001`

### Ejemplo de respuesta
```json
{ "Success":true, "fault":{ "faultcode":"none", "faultstring":"Sale order has been deleted", "detail":"Sale order: V0001 successfully deleted" } }
```

# Buscar ventas

Con esta función, se tiene la capacidad de leer las ventas que han sido registrados en el sistema. 
Es importante destacar que se puede proporcionar el nombre de una en concreto a través de un parámetro de URL query así como una fecha de creación de esta.
En caso de no especificar estos parámetro, se llevará a cabo la lectura de todos las ventas del sistema.
Si la fecha se introduce en el formato no deseado, se mostrarán todas las fechas.

### URL
`/CTNEAT/SALEORDER/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   CODIGOVENTA               |  cadena      |    Nombre de la venta  |       No      | Cualquiera |
|   FECHACREACION               |  cadena      |    Fecha de creación o lanzamiento del pedido  |       No     | Fechas en formato DD/MM/YYYY |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].CODIGOVENTA: Nombre de la venta.
- Result.Data[x].NOMBRECLIENTE: Nombre del cliente.
- Result.Data[x].REFERENCIACLIENTE: Referencia de la venta para el cliente.
- Result.Data[x].FECHACREACION: Fecha de creación de la venta.
- Result.Data[x].LINES: Líneas asociadas a la venta
- Result.Data[x].LINES[y].PRODUCTO: Código del producto de la venta.
- Result.Data[x].LINES[y].VERSIONPRODUCTO: Versión del producto.
- Result.Data[x].LINES[y].UNIDADES: Cantidad específica de la línea.
- Result.Data[x].LINES[y].PRECIO: Precio total de la línea.
- Result.Data[x].LINES[y].FECHAS: Listado de fechas de entrega asociadas a una línea de la venta.
- Result.Data[x].LINES[y].FECHAS[t].UNIDADES: Precio de le fecha de entrega.
- Result.Data[x].LINES[y].FECHAS[t].FECHAENTREGA: fecha de entrega de la línea de la venta.
- Result.Data[x].LINES[y].FECHAS[t].PRECIO: Precio de la entrega de la línea de la venta.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea     |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno      |     	Error en el servidor             |
|     401             |            Unauthorized       |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/SALEORDER/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?CODIGOVENTA=PEDIDO&FECHACREACION=20250302112358`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    {
        "CODIGOVENTA": "V-0001",
        "FECHACREACION": "24/02/2025",
        "REFERENCIACLIENTE": "SP-098-REF",
        "NOMBRECLIENTE": "CLIENTE",
        "LINEAS": [{
            "PRODUCTO": "PROD_0001",
            "UNIDADES": 100,
            "VERSIONPRODUCTO": "v0",
            "PRECIO": 230.65, 
            "FECHAS": [{
                "FECHAENTREGA": "24/04/2025",
                "UNIDADES": 50,
                "PRECIO": 10
            }]	
        }]
    } 
  ] 
}
```

# Albaranes de entrega

En este capítulo se pueden consultar los alabarnes de entrega disponibles en el sistema

# Leer albaranes de entrega

Con esta función, se pueden consultar los albaranes de entrega que hayan sido previamente registrados en el sistema. 

Es importante destacar que se puede proporcionar el nombre de un albarán en concreto a través de un parámetro de URL query así como una fecha de creación de este.
Además, también se añade un nuevo parámetro para poder ver los que han sido finalizados como los que aún están pendientes.

En caso de no especificar estos parámetro, se llevará a cabo la lectura de todos los registros del sistema.
Si la fecha se introduce en el formato no deseado, se mostrarán todas las fechas.

### URL
`/CTNEAT/SALEDELIVERY/READ/{tkn}`

### Método HTTP
<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   DELIVERYNOTENAME               |  cadena      |    Nombre del albarán de entrega  |       No      | Cualquiera |
|   CREATIONDATE               |  cadena      |    Fecha de creación o lanzamiento del pedido  |       No     | Fechas en formato YYYYMMDDHHmmSS |
|   FINISHED               |  numérico      |  Mostrará los albaranes de entrega finalizados  |       No      | Solo puede ser 1 o 0. En caso de no añadir el parámetro a al query, se devolverán tanto los que han sido finalizados como los que no. |

### Encabezados de la solicitud
Encabezados: application/json

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |

##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].DELIVERYNOTENAME: Nombre del pedido.
- Result.Data[x].CUSTOMER: Nombre del cliente asociado al albarán.
- Result.Data[x].FINISHED: Muestra si el pedido está o no finalizado.
- Result.Data[x].CREATIONDATE: Fecha de creación del pedido.
- Result.Data[x].FINISHDATE: Fecha de creación del pedido.
- Result.Data[x].SALENAME: Nombre de la venta asociada al albarán de entrega.
- Result.Data[x].LINES: Líneas del albarán de entrega
- Result.Data[x].LINES[y].PRODUCT: Código del producto de la línea.
- Result.Data[x].LINES[y].PRODUCTVERSION: Inidica la versión del preoducto asiciado.
- Result.Data[x].LINES[y].DEILVEREDUNITS: Indica las unidades entregadas.
- Result.Data[x].LINES[y].UNITS: Cantidad asignada en la línea.
- Result.Data[x].LINES[y].PRICE: Precio total de la línea.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea     |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/SALEDELIVERY/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?DELIVERYNOTENAME=ALB_0001&CREATIONDATE=20250302112358&FINISHED=0`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    {
        "DELIVERYNOTENAME": "ALB_0001",
        "CUSTOMER": "CUST001",
        "FINISHED": 0,
        "CREATIONDATE": "20250302",
        "FINISHDATE": "",
        "SALENAME": "SALE_0001",
        "LINES": [{
            "PRODUCT": "PROD_0001",
            "PRODUCTVERSION": "v0",
            "DEILVEREDUNITS": 100,
            "UNITS": 100,
            "PRICE": 20.56
        }]
    } 
  ] 
}
```

# Artículos stock

Se puede consultar el stock de los artículos registrados en el sistema

# Leer artículos en stock

Con esta función, se tiene la capacidad de leer el stock actual de los artículos que han sido registrados en el sistema. Es importante destacar que se puede proporcionar el código del artículo que se desea leer a través de un argumento de URL query.
### URL
`/CTNEAT/STOCKITEM/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>


### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   ITEMCODE               |  cadena      |    Código interno del artículo  |       No (Si el código de artículo no se especifica, la API devolverá todos los artículos del sistema)      | Cualquiera |

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].ITEMCODE: Representa el código del artículo.
- Result.Data[x].CURRENTUNITS: Representan las unidades actuales del artículo.
- Result.Data[x].RESERVEDUNITS: Representan las unidades reservadas de artículo en el sistema.
- Result.Data[x].PLANNEDUNITS: Representa la cantidad de unidades que hay en planificación.
- Result.Data[x].SPN: Representa el Part number de proveedor que tiene este artículo.
- Result.Data[x].MPN: Representa el Part number de fabricante que tiene este artículo.
- Result.Data[x].CUSTOMERNAME: Representa el nombre del cliente al que este artículo está asociado.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud tuvo éxito     |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://ctincoming/STOCKITEM/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?ITEMCODE=test_item`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    {
        "ITEMCODE": "test_item",
        "CURRENTUNITS": 100,
        "RESERVEDUNITS": 0,
        "PLANNEDUNITS": 10,
        "SPN": "",
        "MPN": "",
        "CUSTOMERNAME": "",
    }
  ] 
}
```

# Facturas de proveedor

En este apartado se podrán consultar las facturas de proveedor del sistema.

# Leer Facturas de proveedor

Con esta función, se pueden leer las facturas de proveedores que hay registradas en el sistema.
En estas se puede filtrar por fecha de creación y por nombre de la factura.

NOTA:
Si ninguno de estos campos se especifica se devolverán todos los registros del sistema. Se aconseja usar algún tipo de filtro para evitar hacer consultas extremadamente largas debido al alto número de registros que pueden haber en la base de datos.

### URL
`/CTNEAT/SUPPLIERINVOICE/READ/{tkn}`
### Método HTTP

<span style="background-color: RGB(49,213,254); color: white; font-weight: bold; padding: 8px;">GET</span>

### Parámetros de la solicitud

| Nombre del parámetro | Tipo de dato | Descripción del parámetro | Obligatorio | Posibles valores |
| -------------------- | ------------ | ------------------------ | ----------- | ----------- |
|   INVOICENAME               |  cadena      |  Nombre de la factura de proveedor  |   No   | Cualquiera |
|   CREATIONDATE               |  cadena      |  Fecha de creación de la factura de proveedor  |   No   | Cualquiera que sea de tipo "DD/MM/YYYY HH:mm:SS" pero en formato YYYYMMDDHHmmSS |
|   FINISHED               |  Numérico  |  Muestra facturas terminadas o por terminar  |   No   | Valores aceptados: 0 o 1. Para mostrar ambas, no añadir este parámetro en la query de la URL|

### Encabezados de la solicitud

| Nombre del encabezado | Descripción del encabezado | Obligatorio |
| --------------------- | -------------------------- | ----------- |

### Cuerpo de la solicitud

No se requiere un cuerpo de solicitud para este método HTTP.

### Parámetros de la respuesta

| Nombre del parámetro | Tipo de dato | Descripción del parámetro |
| -------------------- | ------------ | ------------------------ |
|        Result              |      JSON        |       Json con la descripción del resultado de la operación                   |
##### Elementos de Result
- Result.NRecords: Valor numérico que indica el número de registros en la matriz Result.Data.
- Result.Data: Matriz que contiene uno o más objetos (Cantidad de registrios leídos).
- Result.Data[x].INVOICENAME: Representa elnombre de la factura.
- Result.Data[x].INVOICEDATE: Representa la fecha de la factura.
- Result.Data[x].INVOICECREATIONDATE: Representa la fecha de creación de la factura.
- Result.Data[x].PRICE: Representa el precio sin portes total de la factura.
- Result.Data[x].SHIPPINGTOTALPRICE: Representa el precio con portes total de la factura.
- Result.Data[x].SUPPLIERNAME: Representa el nombre del proveedor.
- Result.Data[x].FINISHED: Muestra si la factura está o no terminada.
- Result.Data[x].LINES: Representa el número de líneas de la factura.
- Result.Data[x].LINES[y].DELYNAME: Representa el nombre del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES: Representan las diferentes líneas del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES[t].DELYDATE: Representa la fecha de la línea del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES[t].ITEMCODE: Representa el código de artículo línea del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES[t].PRICE: Representa el precio total sin portes línea del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES[t].SHIPPINGPRICE: Representa el precio total con portes línea del albarán asociado a la factura.
- Result.Data[x].LINES[y].DELYLINES[t].UNITS: Representa el número de unidades de la línea del albarán asociado a la factura.

### Códigos de estado de la respuesta

| Código de estado | Descripción del código de estado | Posibles razones |
| ---------------- | -------------------------------- | ---------------- |
|     200             |            OK                      |     La solicitud fue exitosa             |
|     400             |            Petición errónea                      |     	Alguno de los parámetros pasados no es correcto             |
|     500             |            Error interno                      |     	Error en el servidor             |
|     401             |            Unauthorized                      |     	El usuario no está autenticado             |

###  Ejemplo de consulta
`http://localhost/CTNEAT/SUPPLIERINVOICE/READ/693DDFEC2F4BFDDEAF04DD2724984C9B3CA89D553DD8E5B9BB233AD6BB6075F1?INVOICENAME=TEST_INV`
### Ejemplo de respuesta
```json
{ 
  "NRecords":1, 
  "Data":[ 
    {
        "INVOICENAME": "",
        "INVOICEDATE":"DD/MM/YYYY",
        "INVOICECREATIONDATE":"DD/MM/YYYY",
        "PRICE": 0,
        "SHIPPINGTOTALPRICE":0,
        "SUPPLIERNAME":"",
        "FINISHED": 0,
        "LINES": [
            "DELYNAME":"DELY_1"
            "DELYLINES": [{
                "DELYDATE":"03/02/2025",
                "ITEMCODE":"",
                "PRICE":0,
                "SHIPPINGPRICE":0,	
          		"UNITS": 10
            }]
        ],
    }
  ] 
}
```