Documentación / ERP / Almacenes
Almacenes
Movimientos de almacén - Lista y detalle
GET /suite/erp/almacenes/movimientos
Consulta movimientos de inventario de una razón social. También admite los alias /suite/erp/almacenes/movimientos/compras/:tkCompra/detalle y /suite/erp/almacenes/movimientos/ventas/:tkVenta/detalle. La respuesta incluye el encabezado Row-Count con el total de movimientos antes de aplicar la paginación.
Rutas alternativas /suite/erp/almacenes/movimientos/compras/:tkCompra/detalle/suite/erp/almacenes/movimientos/ventas/:tkVenta/detalle
Parámetros Nombre Tipo Validación Descripción tkRazonSocialString Requerido Identificador de la razón social cuyos movimientos se consultan. tkMovimientoString Identificador de un movimiento específico. tkAlmacenString Identificador del almacén por el que se filtra. Usa * para no aplicar este filtro. tkOperacionString Identificador de la operación de inventario por la que se filtra. tkUsuarioString Identificador del usuario que registró el movimiento. tkProductoString Identificador del producto por el que se filtra. tkCompraString Identificador de la compra relacionada. Es obligatorio al usar el alias de detalle de compra. tkVentaString Identificador de la venta relacionada. Es obligatorio al usar el alias de detalle de venta. folioInteger Folio de la compra relacionada por el que se filtra. tipoInteger Código de tipo de operación por el que se filtra. periodoInteger Periodo predefinido de consulta. Usa 0 junto con fechaInicio y fechaFin para indicar un rango personalizado. fechaInicioDateTime Fecha inicial del rango personalizado; se usa cuando periodo es 0. fechaFinDateTime Fecha final del rango personalizado; se usa cuando periodo es 0. buscarProductosString Texto que se busca dentro del nombre del producto. conceptoVentaString Texto que se busca dentro del concepto de la venta relacionada. codigoProductoString Texto que se busca dentro del código del producto. referenciaString Texto que se busca dentro del folio de la compra o venta relacionada. ordenString Configuración de ordenamiento aceptada por la API. Si se omite, los movimientos se ordenan por fecha descendente. paginaInteger Número de página que se consulta. cantidadRegistrosInteger Cantidad máxima de movimientos que se devuelve por página.
Respuesta Nombre Tipo Descripción indiceInteger Posición del movimiento dentro del resultado. tkMovimientoString Identificador único del movimiento. cantidadDecimal Cantidad registrada en el movimiento. unidadString Unidad de medida de la cantidad. fechaHoraDateTime Fecha y hora en la que se registró el movimiento. comentarioString Comentario asociado al movimiento. Puede ser null. reversadoBoolean Indica si el movimiento fue reversado. metadataString Metadatos del movimiento serializados como JSON. Puede ser null. almacenString Nombre del almacén donde se registró el movimiento. tkAlmacenUUID Identificador del almacén relacionado. productoString Nombre del producto relacionado. tkProductoString Identificador del producto relacionado. codigoProductoString Código del producto relacionado. operacionString Nombre de la operación de inventario aplicada. claveOperacionString Clave de la operación de inventario aplicada. tipoInteger Código de tipo de la operación aplicada. tkUsuarioString Identificador del usuario que registró el movimiento. usuarioString Nombre del usuario que registró el movimiento. tkCompraString Identificador de la compra relacionada. Puede ser null. tkVentaString Identificador de la venta relacionada. Puede ser null. conceptoVentaString Concepto de la venta relacionada. Puede ser null. tkFacturaString Identificador de la factura relacionada. Puede ser null. folioCompraInteger Folio de la compra relacionada. Puede ser null. folioVentaInteger Folio de la venta relacionada. Puede ser null. entidadString Nombre de la entidad relacionada con la compra o venta. Puede ser null. tkProveedorString Identificador del proveedor relacionado. Puede ser null. tkClienteString Identificador del cliente relacionado. Puede ser null. costoUnitarioDecimal Costo unitario usado para el movimiento. Puede ser null. costoDecimal Costo total del movimiento. Puede ser null. existenciaDecimal Existencia actual del producto en el almacén. Puede ser null. tkExistenciaString Identificador del registro de existencia relacionado. Puede ser null. tieneSerieLoteInteger Indica con 1 si el movimiento tiene series o lotes asociados; de lo contrario devuelve 0.
Solicitud
curl --request GET \
--url 'https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50' \
--header 'token: 00000000-0000-4000-8000-000000000001'const enviarSolicitud = async () => {
const response = await fetch("https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50", {
method: "GET",
headers: {
token: "00000000-0000-4000-8000-000000000001",
}
});
return response.json();
};
enviarSolicitud().then(console.log);// Node.js 18 o posterior
const enviarSolicitud = async () => {
const response = await fetch("https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50", {
method: "GET",
headers: {
token: "00000000-0000-4000-8000-000000000001",
}
});
return response.json();
};
enviarSolicitud().then(console.log);import requests
response = requests.get(
"https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50",
headers={
"token": "00000000-0000-4000-8000-000000000001",
}
)
response.raise_for_status()
resultado = response.json()package main
import (
"encoding/json"
"net/http"
)
func main() {
request, err := http.NewRequest(http.MethodGet, "https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50", nil)
if err != nil {
panic(err)
}
request.Header.Set("token", "00000000-0000-4000-8000-000000000001")
response, err := http.DefaultClient.Do(request)
if err != nil {
panic(err)
}
defer response.Body.Close()
var resultado any
if err := json.NewDecoder(response.Body).Decode(&resultado); err != nil {
panic(err)
}
}using System.Net.Http;
using var client = new HttpClient();
using var request = new HttpRequestMessage(
HttpMethod.Get,
"https://api.upnify.com/suite/erp/almacenes/movimientos?tkRazonSocial=00000000-0000-4000-8000-000000000020&tkAlmacen=00000000-0000-4000-8000-000000000010&pagina=1&cantidadRegistros=50"
);
request.Headers.Add("token", "00000000-0000-4000-8000-000000000001");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var resultado = await response.Content.ReadAsStringAsync();
Respuesta
[
{
"indice": 1,
"tkMovimiento": "00000000-0000-4000-8000-000000000030",
"cantidad": 5,
"unidad": "Pieza",
"fechaHora": "2030-01-02T03:04:05.000Z",
"comentario": "Entrada de inventario",
"reversado": false,
"metadata": "{\"costoUnitario\":100}",
"almacen": "Almacén central",
"tkAlmacen": "00000000-0000-4000-8000-000000000010",
"producto": "Producto de ejemplo",
"tkProducto": "00000000-0000-4000-8000-000000000040",
"codigoProducto": "PROD-001",
"operacion": "Entrada",
"claveOperacion": "ENTRADA",
"tipo": 1,
"tkUsuario": "00000000-0000-4000-8000-000000000050",
"usuario": "Usuario de ejemplo",
"tkCompra": null,
"tkVenta": null,
"conceptoVenta": null,
"tkFactura": null,
"folioCompra": null,
"folioVenta": null,
"entidad": null,
"tkProveedor": null,
"tkCliente": null,
"costoUnitario": 100,
"costo": 500,
"existencia": 25,
"tkExistencia": "00000000-0000-4000-8000-000000000060",
"tieneSerieLote": 0
}
]