# 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/link/64#bkmrk-page-title)</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-page-title)</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 |

### 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
        }
      ]
    }
  ]
}

```