Compartir a través de


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 se puede realizar 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, siga estos pasos.

  1. 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.

  2. En el Panel de acciones, seleccione Consolidación de transacciones de inventario para crear una consolidación de transacciones de inventario.

  3. 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 : seleccione la fecha de transacción más temprana para incluirla en la consolidación.
    • Hasta la fecha en el período del libro mayor cerrado : seleccione 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.

  4. 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.

  5. Seleccione Aceptar.

  6. Recibe un mensaje que le pide que confirme que desea continuar. Lea el mensaje con atención y luego seleccione 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 de la 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, seleccione uno de los siguientes valores para filtrar las consolidaciones que se muestran en la cuadrícula:

  • Activo : muestra solo consolidaciones activas.
  • Todo : muestra todas las consolidaciones.

Para cada consolidación en la 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 la 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 , selecciónela en la cuadrícula y luego, en el Panel de acciones, seleccione 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 la tarea de archivado. 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 tabla InventtransArchive , eso significa que están asignados 1:1. Por lo tanto, puede colocar los campos personalizados en el grupo de campos de InventoryArchiveFields de la tabla inventTrans.
  • Si los nombres de campos personalizados de la tabla InventTrans no coinciden con los nombres de campo de la tabla InventtransArchive, necesitará agregar código para asignarlos. Por ejemplo, si tiene un campo de sistema llamado InventTrans.CreatedDateTime, debe crear un campo en la tabla InventTransArchive con un nombre diferente (como InventtransArchive.InventTransCreatedDateTime) y agregar extensiones a las clases InventTransArchiveProcessTask y InventTransArchiveSqlStatementHelper, 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;
    }
}