Descripción
En esta nueva versión, el módulo de Inventario incorpora mejoras en el manejo de Series Detalladas, permitiendo trabajar con cantidades, unidades de medida y extensiones de atributos. También se incluye la posibilidad de definir layout para las series.
Esta funcionalidad aplica a productos que requieren trazabilidad detallada a nivel de unidad o subconjunto.
Configuración inicial
- El uso de Series Detalladas se activa mediante la configuración del parámetro de ejecución SERIEDETALLADA = “S”.
- Una vez habilitada, los productos incorporan el atributo Utiliza Serie Detallada, cuya activación habilita las validaciones necesarias en las transacciones de inventario:
Funcionamiento general
1. Al activar Series Detalladas en un producto, las transacciones de Inventario publican el place Items Serie Detallada:
2. En este lugar se deben declarar las series asociadas al ítem, asegurando que la suma de sus cantidades coincida con la cantidad del ítem principal. Imágenes de ejemplo:
3. El sistema realiza validaciones automáticas según el tipo de transacción:
- Ingresos: se valida que las series no existan previamente en el inventario.
- Transferencias y Egresos: se valida que las series declaradas existan en el inventario.
4. En la Unidad Operativa de Inventario se incorporan vistas para consultar:
- El listado de Series Detalladas dadas de alta.
- El detalle de movimientos de cada serie.
- El Kardex completo de Series Detalladas.
Imágenes de ejemplo para cada caso:
Scripts de importación desde Excel
Se incluyen tres scripts de ejemplo para facilitar la carga masiva de Series Detalladas en transacciones de Inventario. Cada script permite importar la información desde un archivo Excel específico.
Los scripts deben configurarse como métodos de usuario en el ítem de cada tipo de transacción y utilizan archivos Excel con formatos diferenciados según la operación.
1. INGRESO DE INVENTARIO
- Nombre: “Importar Series Detalladas en Ingreso de Inventario”.
- Ámbito: Método de usuario en el Ítem de la Transacción de Ingreso de Inventario.
- Resultado: importa series nuevas, creando automáticamente el registro de Serie Detallada y su correspondiente ítem dentro de la transacción.
- Texto:
' Importar Series Detalladas en Item de Transaccion de Ingreso de Inventario ' Autor: Claudio Fernandez 2024 enero 17 Sub Main set xProducto = self.ReferenciaTipo set xCompania = self.PlaceOwner.Compania set xUnidadOperativa = self.PlaceOwner.UnidadOperativa if not xProducto Is Nothing then if xProducto.UTILIZASERIEDETALLADA = true then xFileName = "C:\TEMP\SeriesDetalladas.xlsx" SendDebug("Inicio Importar Series Detalladas") Set HojaExcel = CreateObject("Excel.Application") HojaExcel.Workbooks.Open xFileName xCount = 0 xFila = 2 xSeriesImportadas = 0 While HojaExcel.ActiveSheet.Cells(xFila, 1).Value <> "" xCodigo = HojaExcel.ActiveSheet.Cells(xFila, 1).Value xDescripcion = HojaExcel.ActiveSheet.Cells(xFila, 2).Value xDetalle = HojaExcel.ActiveSheet.Cells(xFila, 3).Value xCantidad = HojaExcel.ActiveSheet.Cells(xFila, 4).Value set xSerieDetallada = ExisteBO(self, "SERIEDETALLADA", "CODIGO", xCodigo, nil, false, false, " = ") if xSerieDetallada is Nothing then SendDebug("Creando Serie Detallada código: " & xCodigo) set xSerieDetallada = CrearBO("SERIEDETALLADA", self) xCompania.EntidadesComp.SERIESDETALLADAS.Add(xSerieDetallada) xSerieDetallada.CODIGO = xCodigo xSerieDetallada.DESCRIPCION = xDescripcion xSerieDetallada.DETALLE = xDetalle xSerieDetallada.UnidadOperativa = xUnidadOperativa set xItemSerieDetalladaIngreso = CrearBO("ITEMSERIEDETALLADAINGRESO", self) self.ITEMSSERIEDETALLADA.Add(xItemSerieDetalladaIngreso) xItemSerieDetalladaIngreso.SERIEDETALLADA = xSerieDetallada xItemSerieDetalladaIngreso.CANTIDAD = xCantidad xSeriesImportadas = xSeriesImportadas + 1 else SendDebug("La Serie Detallada código: " & xCodigo & " ya existe.") end if xFila = xFila + 1 wend HojaExcel.Application.Quit Set HojaExcel = Nothing SendDebug("FIN PROCESO !!!! Series importadas: " & xSeriesImportadas) end if 'if xProducto.UTILIZASERIEDETALLADA = true then end if 'if not xProducto Is Nothing then end sub
- Ejemplo de archivo Excel para el ingreso llamado “SeriesDetalladas.xlsx” con el siguiente formato:
2. TRANSFERENCIA DE INVENTARIO
- Nombre: “Importar Series Detalladas en Transferencia de Inventario”.
- Ámbito: Método de usuario en el Ítem de la Transacción de Transferencia de Inventario.
- Resultado: importa series existentes y las asocia al ítem de transferencia.
- Texto:
' Importar Series Detalladas en Item de Transaccion de Transferencia de Inventario
' Autor: Claudio Fernandez 2024 enero 17
Sub Main
set xProducto = self.ReferenciaTipo
set xCompania = self.PlaceOwner.Compania
set xUnidadOperativa = self.PlaceOwner.UnidadOperativa
if not xProducto Is Nothing then
if xProducto.UTILIZASERIEDETALLADA = true then
xFileName = "C:\TEMP\SeriesDetalladasTRX.xlsx"
SendDebug("Inicio Importar Series Detalladas")
Set HojaExcel = CreateObject("Excel.Application")
HojaExcel.Workbooks.Open xFileName
xCount = 0
xFila = 2
xSeriesImportadas = 0
While HojaExcel.ActiveSheet.Cells(xFila, 1).Value <> ""
xCodigo = HojaExcel.ActiveSheet.Cells(xFila, 1).Value
set xSerieDetallada = ExisteBO(self, "SERIEDETALLADA", "CODIGO", xCodigo, nil, false, false, " = ")
if not (xSerieDetallada is Nothing) then
set xItemSerieDetalladaTransf = CrearBO("ITEMSERIEDETALLADATRANSF", self)
self.ITEMSSERIEDETALLADA.Add(xItemSerieDetalladaTransf)
xItemSerieDetalladaTransf.SERIEDETALLADA = xSerieDetallada
xSeriesImportadas = xSeriesImportadas + 1
else
SendDebug("La Serie Detallada código: " & xCodigo & " no existe.")
end if
xFila = xFila + 1
wend
HojaExcel.Application.Quit
Set HojaExcel = Nothing
SendDebug("FIN PROCESO !!!! Series importadas: " & xSeriesImportadas)
end if 'if xProducto.UTILIZASERIEDETALLADA = true then
end if 'if not xProducto Is Nothing then
end sub
- Ejemplo de archivo Excel para la transferencia llamado “SeriesDetalladasTRX.xlsx” con el siguiente formato:
3. EGRESO DE INVENTARIO
- Nombre: “Importar Series Detalladas en Egreso de Inventario”.
- Ámbito: Método de usuario en el Ítem de la Transacción de Egreso de Inventario.
- Resultado: valida la existencia de la serie y la vincula al ítem de egreso.
- Texto:
' Importar Series Detalladas en Item de Transaccion de Egreso de Inventario
' Autor: Claudio Fernandez 2024 enero 17
Sub Main
set xProducto = self.ReferenciaTipo
set xCompania = self.PlaceOwner.Compania
set xUnidadOperativa = self.PlaceOwner.UnidadOperativa
if not xProducto Is Nothing then
if xProducto.UTILIZASERIEDETALLADA = true then
xFileName = "C:\TEMP\SeriesDetalladasEGR.xlsx"
SendDebug("Inicio Importar Series Detalladas")
Set HojaExcel = CreateObject("Excel.Application")
HojaExcel.Workbooks.Open xFileName
xCount = 0
xFila = 2
xSeriesImportadas = 0
While HojaExcel.ActiveSheet.Cells(xFila, 1).Value <> ""
xCodigo = HojaExcel.ActiveSheet.Cells(xFila, 1).Value
set xSerieDetallada = ExisteBO(self, "SERIEDETALLADA", "CODIGO", xCodigo, nil, false, false, " = ")
if not (xSerieDetallada is Nothing) then
set xItemSerieDetalladaEgreso = CrearBO("ITEMSERIEDETALLADAEGRESO", self)
self.ITEMSSERIEDETALLADA.Add(xItemSerieDetalladaEgreso)
xItemSerieDetalladaEgreso.SERIEDETALLADA = xSerieDetallada
xSeriesImportadas = xSeriesImportadas + 1
else
SendDebug("La Serie Detallada código: " & xCodigo & " no existe.")
end if
xFila = xFila + 1
wend
HojaExcel.Application.Quit
Set HojaExcel = Nothing
SendDebug("FIN PROCESO !!!! Series importadas: " & xSeriesImportadas)
end if 'if xProducto.UTILIZASERIEDETALLADA = true then
end if 'if not xProducto Is Nothing then
end sub
- Ejemplo de archivo Excel para el egreso llamado “SeriesDetalladasEGR.xlsx” con el siguiente formato:
Consideraciones generales
- La activación de Series Detalladas modifica la operatoria habitual y habilita validaciones obligatorias para garantizar coherencia entre inventario físico y registros del sistema.
- Las series importadas mediante los scripts deben respetar el formato de los archivos Excel definidos para cada operación.
- La creación automática de Series Detalladas solo aplica al proceso de Ingreso; Transferencias y Egresos requieren que la serie exista previamente.
_________________________________
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo









