Consolidar transacciones de inventario
Con el tiempo, la tabla de transacciones de inventario (InventTrans
) seguirá creciendo y consumirá más espacio en la base de datos. Por lo tanto, las consultas que se realicen en la tabla se volverán gradualmente más lentas. Este artículo describe cómo puede utilizar la función Consolidación de transacciones de inventario para consolidar datos sobre transacciones de inventario y ayudar a mejorar el rendimiento del sistema.
Nota
Sólo las transacciones de inventario financieramente actualizadas se pueden consolidar en un período de libro mayor cerrado seleccionado. Para consolidarse, las transacciones de inventario salientes actualizadas financieramente deben tener un estado de emisión de Vendido, y las transacciones de inventario entrantes deben tener un estado de recepción de Comprado.
Cuando consolida transacciones de inventario, todas las transacciones relacionadas se mueven a la tabla InventTransArchive
. Las transacciones de salida de inventario y las transacciones de recepción de inventario se consolidan por separado, según la combinación del ID del artículo (itemId
) y el ID de la dimensión de inventario (inventDimId
), y se colocan en el resumen transacciones de emisión y recibo resumido.
Si una combinación itemId
y inventDimId
contiene solo una transacción de recibo o emisión, la transacción no se consolidará.
Nota
Después de consolidar sus transacciones de inventario, puede optimizar aún más el almacenamiento y el rendimiento del sistema usando la función Archivar con Dataverse retención a largo plazo para mover InventTransArchive
registros en un Microsoft Azure lago de datos. Para obtener más información, consulte Archivar datos de transacciones de inventario en Dynamics 365 Supply Chain Management.
Activar la función en el sistema
Si su sistema aún no incluye la función que se describe en este artículo, vaya a Gestión de funciones y active Consolidación de transacciones de inventario. característica. Esta función no se puede desactivar después de habilitarla.
Cosas a considerar antes de consolidar transacciones de inventario
Antes de consolidar transacciones de inventario, debe considerar los siguientes escenarios comerciales, ya que se verán afectados por la operación:
- Cuando audita transacciones de inventario de documentos relacionados, como líneas de órdenes de compra, se muestran como consolidadas. Para revisar las transacciones consolidadas, debe ir a Gestión de inventario > Tareas periódicas > Limpieza > Consolidación de transacciones de inventario.
- El cierre de inventario no se puede cancelar para períodos consolidados.
- La conversión de costos estándar no puede ser Listo para períodos consolidados.
- Los informes de inventario que se obtienen a partir de transacciones de inventario se ven afectados cuando se consolidan transacciones de inventario. Estos informes incluyen el informe de antigüedad del inventario y los informes de valor del inventario.
- Los pronósticos de inventario podrían verse afectados si se ejecutan durante el horizonte temporal de los períodos consolidados.
Requisitos previos
Las transacciones de inventarios pueden consolidarse únicamente durante períodos en los que se cumplan las siguientes condiciones:
- El período del libro mayor debe estar cerrado.
- El cierre del inventario debe realizarse en o después de la fecha del período de consolidación.
- El período debe ser al menos un año antes de la fecha del período inicial de consolidación.
- No debe haber ningún recálculo de inventario existente.
Consolide sus transacciones de inventario
Para consolidar transacciones de inventario, seguir siga estos pasos.
Vaya a Gestión de inventario>Tareas periódicas>Limpieza>Consolidación de transacciones de inventario.
Aparece la página Consolidación de transacciones de inventario y muestra una lista de registros de procesos consolidados.
En el Panel de acciones, Seleccionar Consolidación de transacciones de inventario para crear una consolidación de transacciones de inventario.
En el cuadro de diálogo Consolidación de transacciones de inventario , en la ficha desplegable Parámetros , establezca los siguientes campos:
- Desde la fecha en el período del libro mayor cerrado – Seleccionar la fecha de transacción más temprana para incluir en la consolidación.
- Hasta la fecha en el período del libro mayor cerrado – Seleccionar la fecha de transacción más reciente para incluir en la consolidación.
Nota
Sólo períodos que cumplen con los prerrequisitos estarán disponible para su selección.
Sobre la ficha desplegable Ejecutar en segundo plano, configure los detalles del procesamiento por lotes según sus necesidades. Siga los pasos habituales para trabajos por lotes en Microsoft Dynamics 365 Supply Chain Management.
Seleccione Aceptar.
Recibe un mensaje que le pide que confirme que desea continuar. Lea el mensaje con atención y luego seleccione Sí Si desea continuar.
Recibe un mensaje que indica que su trabajo de consolidación de transacciones de inventario se agrega a la cola de lotes. El trabajo comienza a consolidar las transacciones de inventario del período seleccionado.
Ver transacciones de inventario consolidado
La página Consolidación de transacciones de inventario muestra su historial de consolidación completo. Cada fila en cuadrícula muestra información como la fecha en que se creó la consolidación, el usuario que la creó y su estado.
En la lista desplegable en la parte superior de la página Seleccionar uno de los siguientes valores para filtrar las consolidaciones que se muestran en cuadrícula:
- Activo : muestra solo consolidaciones activas.
- Todo : muestra todas las consolidaciones.
Para cada consolidación en cuadrícula, se proporciona la siguiente información:
- Activo : una marca de verificación indica que la consolidación está activa.
- Desde fecha : la fecha de la transacción más antigua que se puede incluir en la consolidación.
- Hasta la fecha : la fecha de la transacción más reciente que se puede incluir en la consolidación.
- Programado por : la cuenta de usuario que creó la consolidación.
- Ejecutado : la fecha en la que se creó la consolidación.
- Detener actualización actual : una marca de verificación indica que la consolidación está en progreso, pero se ha pausado.
- Estado : el estado de procesamiento de la consolidación. Los valores posibles son Espera, En progreso y Finalizado.
La barra de herramientas encima de cuadrícula proporciona los siguientes botones que puede utilizar para trabajar con una consolidación seleccionada:
Transacciones consolidadas : vea los detalles completos de la consolidación seleccionada. La página Transacciones consolidadas que aparece muestra todas las transacciones en la consolidación.
Para ver más información sobre una transacción específica en la página Transacciones consolidadas , Seleccionar en cuadrícula y luego, en el Panel de acciones, Seleccionar Detalles de la transacción consolidada. La página Detalles de transacciones consolidadas que aparece muestra información como la contabilización del libro mayor, referencias relacionadas del libro mayor auxiliar y dimensiones financieras.
Pausa : pausa una consolidación seleccionada que se está procesando actualmente. La pausa entra en vigor sólo después de que se genera el archivo tarea. Por lo tanto, puede haber una pequeña demora antes de que la pausa surta efecto. Si una consolidación está en pausa, aparece una marca de verificación en el campo Detener actualización actual .
Reanudar : reanuda el procesamiento de una consolidación seleccionada que está actualmente en pausa.
Ampliar el código para admitir campos personalizados
Si la tabla InventTrans
contiene uno o más campos personalizados, es posible que deba ampliar el código para admitirlos, dependiendo de cómo se nombren.
- Si los campos personalizados de la tabla
InventTrans
tienen los mismos nombres de campo que los de la tablaInventtransArchive
, eso significa que están asignados 1:1. Por lo tanto, puede colocar los campos personalizados en el grupo de campos deInventoryArchiveFields
de la tablainventTrans
. - Si los nombres de campos personalizados de la tabla
InventTrans
no coinciden con los nombres de campo de la tablaInventtransArchive
, necesitará agregar código para asignarlos. Por ejemplo, si tiene un campo de sistema llamadoInventTrans.CreatedDateTime
, debe crear un campo en la tablaInventTransArchive
con un nombre diferente (comoInventtransArchive.InventTransCreatedDateTime
) y agregar extensiones a las clasesInventTransArchiveProcessTask
yInventTransArchiveSqlStatementHelper
, como se muestra en el siguiente código de ejemplo.
El siguiente código de ejemplo muestra un ejemplo de cómo agregar la extensión requerida a la clase InventTransArchiveProcessTask
.
[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{
protected void addInventTransFields(SysDaSelection _selectionObject)
{
_selectionObject.add(fieldStr(InventTrans, ModifiedBy))
.add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));
next addInventTransFields(_selectionObject);
}
protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
{
_selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
.add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));
next addInventTransArchiveFields(_selectionObject);
}
}
El siguiente código de ejemplo muestra un ejemplo de cómo agregar la extensión requerida a la clase InventTransArchiveSqlStatementHelper
.
[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
private str inventTransModifiedBy;
private str inventTransCreatedBy;
private str inventTransCreatedDateTime;
protected void initialize()
{
next initialize();
inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
}
protected str buildInventTransArchiveSelectionFieldsStatement()
{
str ret;
ret = next buildInventTransArchiveSelectionFieldsStatement();
if (inventTransModifiedBy)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
}
if (inventTransCreatedBy)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
}
if (inventTransCreatedDateTime)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
}
return ret;
}
protected str buildInventTransTargetFieldsStatement()
{
str ret;
ret = next buildInventTransTargetFieldsStatement();
if (inventTransModifiedBy)
{
ret += ',';
ret += strFmt('%1', inventTransModifiedBy);
}
if (inventTransCreatedBy)
{
ret += ',';
ret += strFmt('%1', inventTransCreatedBy);
}
if (inventTransCreatedDateTime)
{
ret += ',';
ret += strFmt('%1', inventTransCreatedDateTime);
}
return ret;
}
}