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

# Utilidades: cálculos y operaciones auxiliares de A3ERP

> Endpoints de utilidades de A3ERP: recálculo de stock, cierres de IVA, evaluación de filtros, cambios de moneda, comisiones, cuentas y vencimientos.

A3ERP API ofrece un conjunto de endpoints de utilidades que encapsulan operaciones comunes de negocio: desde recalcular stocks y precios medios hasta obtener el plan de vencimientos de un documento, pasando por consultar tipos de cambio, comisiones de representantes o cuentas contables asociadas a artículos. Esta página recoge todos estos endpoints agrupados por área funcional.

***

## Stock y precios

### Recalcular stock de un artículo

Recalcula el stock de un artículo concreto en un almacén determinado.

```http theme={null}
GET https://servidor:<puerto>/api/recalcularstocks/articulo/{articulo}/almacen/{almacen}
```

**Ejemplo:**

```http theme={null}
GET https://localhost:5555/api/recalcularstocks/articulo/70AC9964/almacen/%2021
```

<ParamField path="articulo" type="string" required>
  El código del artículo cuyo stock se recalculará.
</ParamField>

<ParamField path="almacen" type="string" required>
  El código del almacén en el que se recalculará el stock.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

### Recalcular todos los stocks y precios medios

Recalcula el stock y el precio medio de coste de todos los artículos. Opcionalmente puede actualizar también el coste en los documentos de venta.

```http theme={null}
GET https://servidor:<puerto>/api/recalcularstocksypreciosmedios/{actualizarcostedocventa}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/recalcularstocksypreciosmedios/F
```

<ParamField path="actualizarcostedocventa" type="string" required>
  Indica si se debe actualizar el coste en los documentos de venta. Valores posibles: `F` (no actualizar) o `T` (actualizar).
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

## IVA / IGIC

### Crear cierre de IVA/IGIC

Crea los cierres de IVA o IGIC para el periodo indicado.

```http theme={null}
GET https://servidor:<puerto>/api/CrearCierresIvaIgic/{tipo}/{fechainicio}/{fechafin}/{hacercierredocumentos}/{hacercierrecontable}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/CrearCierresIvaIgic/1/20080101/20090101/F/F
```

<ParamField path="tipo" type="string" required>
  El tipo contable al que pertenece el cierre.
</ParamField>

<ParamField path="fechainicio" type="string" required>
  Fecha de inicio del periodo de cierre en formato `YYYYMMDD`.
</ParamField>

<ParamField path="fechafin" type="string" required>
  Fecha de fin del periodo de cierre en formato `YYYYMMDD`.
</ParamField>

<ParamField path="hacercierredocumentos" type="string" required>
  Indica si se debe realizar el cierre de documentos. Valores posibles: `F` (no) o `T` (sí).
</ParamField>

<ParamField path="hacercierrecontable" type="string" required>
  Indica si se debe realizar el cierre contable. Valores posibles: `F` (no) o `T` (sí).
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

### Borrar cierres de IVA/IGIC

Elimina los cierres de IVA o IGIC del periodo indicado.

```http theme={null}
GET https://servidor:<puerto>/api/BorrarCierresIvaIgic/{tipo}/{fechainicio}/{fechafin}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/BorrarCierresIvaIgic/1/20080101/20090101
```

<ParamField path="tipo" type="string" required>
  El tipo contable al que pertenece el cierre a eliminar.
</ParamField>

<ParamField path="fechainicio" type="string" required>
  Fecha de inicio del periodo en formato `YYYYMMDD`.
</ParamField>

<ParamField path="fechafin" type="string" required>
  Fecha de fin del periodo en formato `YYYYMMDD`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

## Filtros y utilidades

### Evaluar filtro

Devuelve la sentencia SQL generada por un filtro configurado en A3ERP.

```http theme={null}
GET https://servidor:<puerto>/api/evaluarfiltro/{codigo}/{alias}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/evaluarfiltro/1/CLIENTES
```

<ParamField path="codigo" type="string" required>
  El código del filtro a evaluar.
</ParamField>

<ParamField path="alias" type="string" required>
  El alias del filtro. Si el filtro no tiene alias, pasa una cadena vacía (`''`).
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

<Note>
  No es posible evaluar filtros que contengan valores variables (parámetros dinámicos).
</Note>

***

### Obtener siguiente identificador único

Devuelve el siguiente identificador único disponible para el campo indicado. Si el identificador no existe en la tabla de identificadores, lo crea y le asigna el valor `1`.

```http theme={null}
GET https://servidor:<puerto>/api/sigid/{id}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/sigid/CODCLI
```

<ParamField path="id" type="string" required>
  El nombre del identificador en la tabla de identificadores de A3ERP. Por ejemplo: `CODCLI`, `CODPRO`, `CODART`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

## Moneda

### Cambio entre moneda y EUR

Devuelve el tipo de cambio entre la moneda indicada y la moneda principal (EURO) en la fecha especificada.

```http theme={null}
GET https://servidor:<puerto>/api/cambio/{codmon}/{fecha}
```

**Ejemplo:**

```http theme={null}
GET https://localhost:5555/api/cambio/USD/20221005
```

<ParamField path="codmon" type="string" required>
  El código de la moneda para la que se desea obtener el tipo de cambio.
</ParamField>

<ParamField path="fecha" type="string" required>
  La fecha del tipo de cambio en formato `YYYYMMDD`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

### Cambio entre dos monedas cualesquiera

Devuelve el tipo de cambio entre una moneda de origen y una moneda de destino en la fecha especificada.

```http theme={null}
GET https://servidor:<puerto>/api/cambiomon/{codmonini}/{codmonfin}/{fecha}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/cambiomon/EURO/PTS/20221005
```

<ParamField path="codmonini" type="string" required>
  El código de la moneda de origen.
</ParamField>

<ParamField path="codmonfin" type="string" required>
  El código de la moneda de destino.
</ParamField>

<ParamField path="fecha" type="string" required>
  La fecha del tipo de cambio en formato `YYYYMMDD`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

## Artículos

### Descripción de artículo por idioma

Devuelve la descripción y el texto del artículo en el idioma indicado.

```http theme={null}
GET https://servidor:<puerto>/api/DescArticulo/{codart}/{codidi}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/DescArticulo/1/ESP
```

<ParamField path="codart" type="string" required>
  El código del artículo.
</ParamField>

<ParamField path="codidi" type="string" required>
  El código del idioma en el que se quiere obtener la descripción. Por ejemplo: `ESP`, `ENG`, `FRA`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

**Respuesta:**

```json theme={null}
{
  "Descripcion": "Descripcion del articulo"
}
```

***

## Representantes y comisiones

### Obtener representante de un cliente

Devuelve el código del representante asignado a un cliente.

```http theme={null}
GET https://servidor:<puerto>/api/obtrepresentante/{codcli}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/obtrepresentante/16589
```

<ParamField path="codcli" type="string" required>
  El código del cliente del que se quiere obtener el representante.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

### Calcular comisión

Devuelve el porcentaje de comisión aplicable y su origen, dados los parámetros de la línea de venta.

```http theme={null}
GET https://servidor:<puerto>/api/ObtComis/{codrep}/{codart}/{codcli}/{unidades}/{desc}/{fecha}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/ObtComis/1/28781272/6310/1/20/20131223
```

<ParamField path="codrep" type="string" required>
  El código del representante.
</ParamField>

<ParamField path="codart" type="string" required>
  El código del artículo.
</ParamField>

<ParamField path="codcli" type="string" required>
  El código del cliente.
</ParamField>

<ParamField path="unidades" type="string" required>
  Las unidades del artículo en la línea de venta.
</ParamField>

<ParamField path="desc" type="string" required>
  El descuento aplicado a la línea.
</ParamField>

<ParamField path="fecha" type="string" required>
  La fecha de la comisión en formato `YYYYMMDD`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

**Respuesta:**

```json theme={null}
{
  "Comision": "0",
  "MargenPrecio": "P"
}
```

***

## Cuentas contables

### Cuenta de ventas de un artículo

Devuelve la cuenta contable de ventas para la combinación artículo/cliente, siguiendo el siguiente orden de prioridad:

1. Cuenta de ventas del artículo (si existe)
2. Cuenta de ventas del cliente (si existe)
3. Cuenta de ventas de los datos generales

```http theme={null}
GET https://servidor:<puerto>/api/CuentaArtV/{codart}/{codcli}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/CuentaArtV/ET12535827/1689
```

<ParamField path="codart" type="string" required>
  El código del artículo.
</ParamField>

<ParamField path="codcli" type="string" required>
  El código del cliente.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

### Cuenta de compras de un artículo

Devuelve la cuenta contable de compras para la combinación artículo/proveedor, siguiendo el siguiente orden de prioridad:

1. Cuenta de compras del artículo (si existe)
2. Cuenta de compras del proveedor (si existe)
3. Cuenta de compras de los datos generales

```http theme={null}
GET https://servidor:<puerto>/api/CuentaArtC/{codart}/{codpro}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/CuentaArtC/ET12535827/1
```

<ParamField path="codart" type="string" required>
  El código del artículo.
</ParamField>

<ParamField path="codpro" type="string" required>
  El código del proveedor.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

***

## Vencimientos

### Calcular plan de vencimientos

Genera el plan de vencimientos para un documento de cobro o pago, aplicando la forma de pago y las condiciones especificadas.

```http theme={null}
GET https://servidor:<puerto>/api/Vencimientos/{cobro}/{codcli_o_codpro}/{totmon}/{totdoc}/{forpag}/{docpag}/{codmon}/{fecha}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/Vencimientos/T/130/5519.28/5519.28/2/P/EURO/20221005
```

<ParamField path="cobro" type="string" required>
  Indica si se trata de un cobro o un pago. Valores posibles: `T` (cobro) o `F` (pago).
</ParamField>

<ParamField path="codcli_o_codpro" type="string" required>
  El código del cliente (si es cobro) o del proveedor (si es pago).
</ParamField>

<ParamField path="totmon" type="string" required>
  El total en la moneda del documento.
</ParamField>

<ParamField path="totdoc" type="string" required>
  El importe total del documento.
</ParamField>

<ParamField path="forpag" type="string" required>
  El código de la forma de pago a aplicar.
</ParamField>

<ParamField path="docpag" type="string" required>
  El documento de pago asociado.
</ParamField>

<ParamField path="codmon" type="string" required>
  El código de la moneda. Por ejemplo: `EURO`.
</ParamField>

<ParamField path="fecha" type="string" required>
  La fecha base para el cálculo de vencimientos en formato `YYYYMMDD`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

**Respuesta:**

```json theme={null}
{
  "Vencimientos": [
    {
      "fechavto": "04/11/2022",
      "importevto": "5519.28"
    }
  ]
}
```

***

## Configuración

### Datos de configuración de A3ERP

Devuelve la información de configuración de la instalación de A3ERP: versión, gama y moneda principal.

```http theme={null}
GET https://servidor:<puerto>/api/datosconf
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/datosconf
```

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

**Respuesta:**

```json theme={null}
{
  "versiona3erp": "13.03.00.0",
  "gama": 3,
  "version": 13,
  "revision": 3,
  "parche": 0,
  "monedaprincipal": "EURO"
}
```

***

### Obtener programas externos

Devuelve la lista de programas externos configurados en A3ERP. Admite filtrado y ordenación.

```http theme={null}
GET https://servidor:<puerto>/api/obtenerprogramasexternos
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/obtenerprogramasexternos
```

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

<ResponseField name="200" type="array">
  Array con los programas externos configurados en A3ERP.
</ResponseField>

***

## Ficheros

### Descargar un fichero del servidor

Descarga un fichero del servidor donde está alojada la API a partir de su ruta en el sistema de archivos.

```http theme={null}
GET https://servidor:<puerto>/api/descargafichero/{ruta}
```

**Ejemplo:**

```http theme={null}
GET https://servidor:5555/api/descargafichero/C:%5Ccarpeta%5Cfichero.pdf
```

<Warning>
  El carácter `\` (barra invertida) debe codificarse como `%5C` en la ruta. Por ejemplo, `C:\informes\factura.pdf` se convierte en `C:%5Cinformes%5Cfactura.pdf`.
</Warning>

<ParamField path="ruta" type="string" required>
  Ruta del fichero a descargar en el servidor. Sustituye cada `\` por `%5C`. Ejemplo: `C:%5Ccarpeta%5Cfichero.pdf`.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Token de autenticación en formato `Bearer <JWT_token>`.
</ParamField>

**Respuesta:** El fichero solicitado en formato binario (`application/octet-stream`).
