Movimientos de material
Los movimientos de material son las operaciones que agrupan transferencias de inventario. Cada tipo de movimiento tiene un propósito específico en el flujo de trabajo.
Tipos de movimientos
| Tipo | Acción | Origen | Destino |
|---|---|---|---|
| Asignación | Asignar materiales a stock operativo | Depósito proveedor o almacenamiento | Depósito almacenamiento u OT |
| Solicitud | Cuadrilla retira materiales para una OE | Depósito OT | Depósito cuadrilla de la OE |
| Movimiento manual | Transferir libremente | Cualquier depósito | Cualquier depósito |
| Devolución | Devolver materiales imputados a una OE | Depósito cuadrilla | Depósito OT |
| Pérdida | Registrar extravío imputado a una OE | Depósito cuadrilla | Depósito pérdidas |
| Consumo | Registrar uso imputado a una OE | Depósito cuadrilla | (sin destino) |
En los formularios y filtros de movimientos, las órdenes muestran sus identificadores antes del nombre para poder distinguir registros similares:
- Las órdenes de trabajo (OT) se muestran como
[34] OT Nombre. - Las órdenes de ejecución (OE) se muestran como
[34/12] Código · Nombre, donde34es el ID de la OT y12el ID de la OE. Si la OE no tiene código, después del prefijo aparece directamente su nombre.
Los demás depósitos muestran el nombre seguido de una abreviatura del tipo para ahorrar espacio.
Ejemplos habituales:
Depósito Central (D/Físico)Depósito Acme Corporation (D/Proveedor)[34] OT 123 - Zona Sur
Diagrama general de flujos
Permisos y visibilidad
Para acceder al listado y al detalle se requieren las acciones Ver listado de movimientos de material y Ver detalle de movimiento de material, respectivamente.
Cuando el rol está limitado a clientes, el sistema muestra movimientos vinculados con las OTs, OEs o depósitos de OT de esos clientes. También muestra movimientos que involucren un depósito de proveedor, como origen o destino, cuando el proveedor está asociado a uno de los clientes permitidos por el rol o cuando el movimiento quedó atribuido explícitamente a ese cliente.
Un movimiento que involucre un proveedor sin clientes asociados no se muestra ni se puede crear para roles limitados por cliente. La asociación se configura desde la ficha del proveedor.
Al crear un movimiento, los selectores de depósito de proveedor sólo ofrecen depósitos asociados a los clientes permitidos por el rol. Si el depósito de proveedor elegido corresponde a más de un cliente permitido para el usuario, el formulario muestra Cliente del proveedor para definir a qué cliente corresponde ese movimiento. Si sólo queda un cliente permitido, el sistema lo asigna sin pedir una elección adicional.
Si se rechaza un acceso, la pantalla indica la acción requerida con su código (por ejemplo, material_movements.index). Si la cuenta ya tiene esa acción, el mensaje aclara que la restricción proviene del alcance de organización, cliente o recurso.
Asignación
La asignación mueve materiales hacia stock operativo. Normalmente parte desde depósito de proveedor, pero también puede originarse en un depósito de almacenamiento para reubicar material asignable hacia una OT.
Cuando el origen es un depósito de proveedor, el buscador ofrece únicamente materiales con un catálogo activo para ese proveedor y muestra su matrícula correspondiente. La recepción vuelve a validar esa asociación, por lo que no se puede ingresar un material usando el depósito de otro proveedor. Los movimientos históricos permanecen consultables aunque después se desactive un catálogo.
Uso típico:
- El proveedor libera medidores, caños u otros materiales para la obra
- Reasignar materiales desde un depósito físico hacia una OT
- Ingresar materiales al sistema desde el proveedor
Precio inicial de los lotes
Cuando la asignación parte desde un depósito de proveedor, cada línea permite completar de forma opcional el Precio unitario del lote y su Moneda antes de crear el movimiento.
- Si informás el precio al crear la asignación, el lote queda con ese precio confirmado cuando se registra su ingreso.
- Si no lo informás, el lote se crea con el precio pendiente. La moneda solo se guarda cuando hay un precio informado.
- Al confirmar la recepción, el campo Precio unitario aparece precargado con el valor de la asignación. Podés reemplazarlo para que el lote use el precio nuevo.
- Si el campo se deja vacío durante la recepción, se conserva el precio informado al crear la asignación. Si tampoco había un precio inicial, el lote continúa pendiente.
- Si seleccionás el estado Pendiente y dejás el precio vacío durante la recepción, el lote queda pendiente y se descarta el precio inicial de la asignación.
- Una vez registrado un ingreso de la línea, su precio y moneda iniciales dejan de ser editables, porque el lote ya fue valuado con esos datos.
- En el detalle del movimiento, el acordeón Lotes generados muestra una fila por cada recepción realizada, con la cantidad inicial del lote, la fecha, el precio unitario definitivo, la moneda y el estado del precio. Si una línea se recibe en varias etapas, se muestran todos los lotes resultantes. El acordeón se actualiza automáticamente después de cada recepción, sin recargar la página completa.
El precio inicial no aparece en asignaciones que parten desde un depósito de almacenamiento, porque esos movimientos trasladan stock de lotes que ya existen.
Materiales serializados en asignaciones desde proveedor
Cada línea de un material serializado representa una única unidad y mantiene cantidad 1.
Cuando la asignación parte desde un depósito de proveedor:
- Agregá el material serializado a la asignación.
- Completá Número de serie en la misma línea.
- Creá la asignación. El sistema crea el serial y lo vincula con esa línea en una única operación.
- Desde el detalle de la asignación, confirmá Recibir para darle ingreso al depósito destino.
No hace falta ir antes a la ficha del material para declarar el serial. Si el número está vacío, ya existe para ese material o se repite dentro de la asignación, el movimiento no se crea y ninguna unidad queda registrada parcialmente.
Cuando la asignación parte desde un depósito de almacenamiento, la unidad ya debe existir en stock y se elige mediante el selector Identificador.
Confirmación de recepción
Cuando la asignación queda pendiente y luego se confirma con Recibir:
- El modal permite cargar Referencia / N° remito.
- Si el origen es proveedor, esa referencia es obligatoria.
- Si el origen es almacenamiento, esa referencia es opcional.
- El valor se copia en cada movimiento de stock generado por esa confirmación y luego queda visible en su listado y detalle.
Materiales consumibles en asignaciones desde proveedor
Cuando el material es de tipo consumible y la asignación parte desde proveedor, la recepción tiene una lógica especial:
- En esta versión, cada línea consumible representa una única unidad consumible. Físicamente puede ser una bobina o un tramo.
- El valor cargado en Recibido define la longitud real inicial de esa unidad.
- Esa longitud puede ser distinta de la solicitada originalmente. Por ejemplo, podés solicitar
1000 my recibir una bobina real de990 mo1030 m. - Al confirmar la recepción, la línea queda registrada con esa longitud real, no con la cantidad solicitada originalmente.
- En la UI, la trazabilidad de esa línea se muestra como Unidad / Identificador y el selector de origen usa Unidad origen.
- El formulario mantiene el campo Longitud Real Del Tramo (m) para la medida y permite completar Unidad / Serial de bobina de forma opcional.
- Si ese dato se deja vacío, el sistema genera un identificador interno automáticamente.
Solicitud
La cuadrilla solicita el retiro de materiales desde el depósito de una OT hacia su propio depósito. Toda solicitud debe quedar imputada a una orden de ejecución (OE).
Al crearla:
- Elegí el depósito OT de origen.
- Elegí la OE en el selector visible. La búsqueda ofrece sólo OEs En Proceso de esa OT; podés buscar por nombre, código o ID de OE. Cada opción usa el formato
[ID OT/ID OE]. - El sistema completa el depósito de la cuadrilla destino según la OE seleccionada.
- Cargá los materiales y cantidades.
La OE queda visible en el movimiento y conserva la trazabilidad necesaria para su finalización. No se puede crear una solicitud sin elegirla.
Uso típico:
- Cuadrilla retira materiales necesarios para ejecutar los trabajos
- Solicitar equipos, herramientas o insumos para una OE
Movimiento manual
Transferencia libre entre cualquier par de depósitos.
Uso típico:
- Redistribuir stock entre depósitos centrales
- Corregir ubicaciones incorrectas
- Movimientos no cubiertos por los otros tipos
En movimientos manuales, el selector de depósito origen se filtra por permisos de depósitos y por disponibilidad de materiales visibles para el usuario.
Devolución
Retorno al depósito de la OT de materiales que permanecen en poder de una cuadrilla. Toda devolución debe indicar de qué OE vuelve el material.
Uso típico:
- Devolver sobrantes al finalizar una OE
- Retornar materiales incorrectos o dañados para revisión
Crear una devolución
- Elegí el depósito de cuadrilla de origen.
- Elegí la OE. Sólo aparecen OEs de esa cuadrilla que todavía tienen materiales devolvibles; podés buscar por nombre, código o ID de OE. Cada opción comienza con los identificadores de la OT y la OE separados por una barra, por ejemplo
[34/12]. - El sistema completa la OT asociada a la OE y muestra el mismo identificador delante de su nombre. Este campo es de sólo lectura para evitar que la devolución quede imputada a una OT diferente.
- Revisá el panel Saldo devolvible de la OE y cargá materiales y cantidades. Tanto el panel como el buscador muestran sólo el saldo atribuible a la OE elegida; el resto del stock físico de la cuadrilla no aparece en esta devolución.
Una devolución pendiente compromete su cantidad aunque el stock todavía permanezca físicamente en la cuadrilla. Ese compromiso se descuenta de nuevas devoluciones y de la finalización de la OE para evitar devolver dos veces el mismo material.
La OE de una devolución puede corregirse mientras no se haya recibido ninguna cantidad. Después de una recepción parcial o total, la imputación queda bloqueada. Las devoluciones históricas que no tengan OE deben imputarse antes de poder recibir materiales.
Confirmación y remito de devolución
Los materiales quedan pendientes hasta que el depósito destino confirma la cantidad con Recibir. Cada confirmación, parcial o total, genera un Remito de Devolución con los materiales efectivamente recibidos.
El remito identifica a las dos partes del procedimiento:
- El Responsable de recepción (sistema) es el usuario que registra la recepción.
- La persona que devuelve completa nombre, DNI y firma, o entrega un PDF firmado para adjuntar.
Pérdida
Registro de materiales perdidos, robados o dañados irreparablemente.
Uso típico:
- Documentar extravíos para trazabilidad
- Dar de baja materiales irrecuperables
Crear una pérdida
- Elegí el depósito de cuadrilla de origen.
- Elegí la OE correspondiente. El selector muestra las OEs de esa cuadrilla; podés buscar por nombre, código o ID de OE. Cada opción comienza con los identificadores de la OT y la OE, por ejemplo
[34/12]. - El sistema completa el depósito de pérdidas asociado a la cuadrilla.
- Cargá los materiales y cantidades.
La OE deja la pérdida identificada para el seguimiento de la obra y queda visible en la rendición de materiales de la OT como Pérdidas auditadas.
Consumo
Registro de materiales utilizados o instalados en la obra. No tienen depósito destino porque salen del sistema.
Uso típico:
- Registrar materiales instalados en una conexión
- Documentar insumos consumidos en el trabajo
Crear un consumo
- Elegí el depósito de cuadrilla de origen.
- Elegí la OE correspondiente. El selector muestra las OEs de esa cuadrilla; podés buscar por nombre, código o ID de OE. Cada opción comienza con los identificadores de la OT y la OE, por ejemplo
[34/12]. - Cargá los materiales y cantidades. Como el consumo no tiene destino, esos materiales salen del sistema.
La OE deja el consumo identificado para el seguimiento de la obra. En la rendición de materiales de la OT, los materiales en comodato se muestran como Consumo auditado y los materiales comprados como Consumo comprado.
Estado operacional
Cada movimiento de material tiene un estado operacional:
| Estado | Significado |
|---|---|
| Pendiente | Ningún ítem fue recibido aún |
| Parcial | Algunos ítems recibidos, otros pendientes |
| Completado | Todos los ítems fueron recibidos |
El estado operacional se calcula automáticamente según cuántos ítems tienen cantidad recibida.
Estado de ciclo
Además del estado operacional, cada movimiento tiene un estado de ciclo:
| Estado | Significado |
|---|---|
| Activo | Permite registrar nuevas entregas/recepciones |
| Cerrado | Bloquea nuevas entregas/recepciones |
Reglas de cierre:
- Aplica a todos los tipos de movimientos (Asignación, Solicitud, Manual, Devolución, Pérdida y Consumo).
- Cierre manual: un usuario con permiso puede cerrar el movimiento en cualquier momento.
- Cierre automático: cuando el movimiento queda Completado, pasa automáticamente a Cerrado.
- Un movimiento puede quedar Cerrado + Parcial si se cerró antes de completar todas las cantidades.
- No existe reapertura en esta versión: un movimiento cerrado no vuelve a activo.
- El cierre no impide agregar archivos de respaldo: los usuarios con permiso para editar movimientos pueden adjuntarlos desde el detalle sin reabrir ni modificar el movimiento.
Visualización en la interfaz
En el detalle del movimiento se muestran:
- Estado operacional (Pendiente/Parcial/Completado).
- Estado de ciclo como indicador independiente (
Activo > Cerrado). - Si está cerrado, el estado Cerrado se muestra con ícono de candado.
Permisos
El cierre manual requiere el permiso de acción close sobre material_movements.
Agregar archivos adjuntos requiere el permiso Editar movimientos de material. La carga está disponible en movimientos activos y cerrados de tipo Asignación, Solicitud y Devolución. En un movimiento cerrado solo se agregan archivos: no se habilitan la edición de datos, la eliminación de adjuntos ni nuevas entregas o recepciones.
Impacto en pendientes de solicitudes
Para cálculo de pendientes de solicitudes de materiales:
- Solo se consideran movimientos de tipo Solicitud (
MaterialRequest) con ciclo Activo. - Si una solicitud vieja se cierra, deja de computar como pendiente para nuevas solicitudes.
Selección de materiales desde el depósito origen
Al crear o editar un movimiento, después de elegir el depósito origen se carga un panel de Materiales disponibles para armar el movimiento más rápido.
- Permite buscar por nombre o matrícula.
- Muestra el stock disponible del depósito origen para cada material.
- En depósitos que sí validan stock, también informa la cantidad pendiente en otras solicitudes.
- El botón Agregar crea la línea del material en el formulario y evita repetirlo mientras ya esté seleccionado.
En una devolución, pérdida o consumo, primero deben estar elegidos el depósito de cuadrilla y la OE. El selector ofrece las OEs de esa cuadrilla. En una devolución, el sistema completa la OT destino a partir de esa OE y el panel muestra únicamente materiales asignados a la OE elegida; las cantidades quedan limitadas al saldo que no esté consumido, perdido, devuelto ni comprometido en otra devolución pendiente.
Si el material es consumible y el depósito origen valida stock, el panel además muestra:
Total disponibleen metrosUnidadescomo cantidad de bobinas/tramos disponiblesLongitud mayorpara la unidad disponible más larga- Un selector Unidad origen; si no hay opciones aparece Sin unidades disponibles
Cantidades decimales
- Los materiales regulares y a granel admiten decimales solo si su unidad de medida tiene activada la opción Admite decimales.
- Los materiales serializados siempre se mueven con cantidad
1. - Los materiales consumibles admiten decimales para registrar la longitud o el remanente de cada tramo.
La regla se aplica al crear, recibir, reubicar, importar y registrar consumos/devoluciones de materiales. Si una unidad no admite decimales, el sistema exige cantidades enteras.
Qué pasa según el tipo de depósito origen
- Depósito de proveedor: no valida stock. El panel avisa explícitamente que el stock no se controla en ese origen.
- Otros depósitos: por defecto muestra solo materiales con stock disponible.
- Opción
Incluir sin stock: permite ampliar el listado para ver también materiales sin existencias. Esta opción no aparece en Asignación, donde el flujo suele partir desde proveedor o desde stock ya conocido.
Recepción de materiales
En Asignación, Solicitud, Movimiento manual y Devolución, cuando se crea un movimiento los ítems quedan pendientes y la entrega/recepción se registra después:
- Ir al movimiento de material
- Ver los ítems pendientes
- Confirmar la cantidad recibida de cada uno
- El sistema crea los movimientos de stock correspondientes
En recepciones de Asignación:
- Si el origen es un depósito de proveedor, la confirmación exige completar Referencia / N° remito.
- Si el origen es un depósito de almacenamiento, esa referencia es opcional.
- El valor queda guardado en cada movimiento de stock generado.
Unidades consumibles y cortes parciales
Los materiales consumibles se usan cuando no alcanza con saber el total en metros y también importa la distribución física del stock.
- El stock se sigue viendo en metros, pero además se conserva la identidad de cada unidad consumible.
- Esa unidad puede ser una bobina completa, un tramo o un remanente reutilizable.
- Cuando movés una unidad completa, se traslada el mismo identificador.
- Cuando movés solo una parte, el sistema hace el corte en forma automática:
- deja el remanente en origen
- crea una nueva unidad en destino por la longitud movida
- En esta versión no hace falta crear manualmente el remanente ni dividir la bobina antes del movimiento.
Si el movimiento está Cerrado, no se podrán registrar nuevas entregas/recepciones.
La recepción puede ser parcial. Por ejemplo, si se solicitan 100 metros de cable pero solo llegan 80, se registra la cantidad recibida y el movimiento queda en estado "Parcial".
Los movimientos de tipo Pérdida y Consumo no pasan por esta recepción posterior. El sistema procesa sus ítems automáticamente al crearlos, genera los movimientos de stock correspondientes y, si todo quedó completado, los cierra también de forma automática.
Remitos de retiro y devolución
El sistema emite remitos para dos tipos de movimientos:
-
Solicitud (
MaterialRequest): al confirmar Entregar, genera un Remito de Retiro. -
Devolución (
MaterialReturn): al confirmar Recibir, genera un Remito de Devolución. -
Cada confirmación individual o masiva genera un remito PDF con las cantidades procesadas en ese momento. Una entrega o devolución parcial puede producir varios remitos.
-
En esa confirmación se puede cargar una observación opcional de hasta 500 caracteres.
-
El remito queda visible en Remitos de Retiro o Remitos de Devolución dentro del detalle del movimiento.
-
Cada remito incluye materiales retirados o devueltos, la columna Unidad / Identificador, cantidades, depósitos, referencia operativa y usuario que registró la operación.
-
Si se cargó una observación, queda impresa en el PDF original y también aparece en la pantalla de firma táctil.
-
Siempre se puede descargar el comprobante base con el botón PDF original.
Firma de remitos
Las acciones de firma están disponibles para usuarios con permisos específicos:
- Subir PDF firmado de remitos para adjuntar un PDF ya firmado.
- Firmar remitos en pantalla táctil para generar la firma desde la app.
Fase 1: subir PDF firmado
- Usar Subir PDF firmado para adjuntar un PDF firmado manualmente.
- Si el remito ya tenía un firmado, se muestra Subir PDF firmado (reemplaza) y se solicita confirmación.
- La columna Firmado muestra check y fecha/hora de firma.
- El firmado vigente se descarga con PDF firmado.
Cada remito mantiene una sola versión firmada activa.
Cuando se reemplaza el archivo firmado, el blob anterior se purga si ya no tiene adjuntos activos.
Fase 2: firma táctil en pantalla
- Usar Firma táctil para abrir la pantalla de firma.
- En un retiro, completar Nombre y aclaración, DNI y firma de quien retira.
- En una devolución, completar Nombre y aclaración, DNI y firma de quien devuelve.
- La firma se puede dibujar con dedo, lápiz táctil o mouse.
- Al confirmar, el sistema genera un nuevo PDF firmado y lo adjunta al remito.
- Si existía un PDF firmado previo (subido o táctil), se reemplaza por el nuevo.
En un retiro, el bloque Responsable de depósito (sistema) se completa automáticamente con el usuario que registró la entrega. En una devolución, el bloque equivalente es Responsable de recepción (sistema) y muestra al usuario que recibió los materiales.
Corrección de remitos con error
Si un retiro o una devolución se registró con error, no se debe borrar el movimiento original ni su remito. La corrección se realiza mediante un movimiento inverso (compensatorio) para mantener trazabilidad.
Ver procedimiento completo en Compensación de movimientos.