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. En este artículo se describe cómo puede usar la característica de consolidación de transacciones de inventario para consolidar datos sobre transacciones de inventario para ayudar a mejorar el rendimiento del sistema.

Nota

Solo las transacciones de inventario actualizadas financieramente se pueden consolidar en un período contable cerrado seleccionado. Para consolidarse, las transacciones de inventario de salida actualizadas financieramente deben tener un estado de emisión de Vendido y las transacciones de inventario de entrada deben tener un estado derecepción de Comprado.

Cuando consolida transacciones de inventario, todas las transacciones relacionadas se mueven a la InventTransArchive tabla. Las transacciones de emisión de inventario y las transacciones de recepción de inventario se consolidan por separado, en función de la combinación del id. de artículo (itemId) y el id. de dimensión de inventario (inventDimId), y se colocan en la emisión resumida y las transacciones de recepción resumidas.

Si una itemId combinación "And inventDimId " contiene solo una transacción de recepción 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 utilizando la característica Archivo con Dataverse retención a largo plazo para mover InventTransArchive registros a un lago de Microsoft Azure 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 característica que se describe en este artículo, vaya a Administración de características y active la característica Consolidación de transacciones de inventario. Esta característica no se puede deshabilitar después de habilitarse.

Aspectos que debe considerar antes de consolidar transacciones de inventario

Antes de consolidar transacciones de inventario, debe tener en cuenta los siguientes escenarios empresariales, ya que se verán afectados por la operación:

  • Cuando audita transacciones de inventario de documentos relacionados, como líneas de pedidos de compra, se muestran como consolidados. Para revisar las transacciones consolidadas, debe ir a Gestión de > inventario, Tareas > periódicas > , Limpiar y Consolidación de transacciones de inventario.
  • El cierre de inventario no se puede cancelar para períodos consolidados.
  • La conversión de costes estándar no se puede Listo para períodos consolidados.
  • Los informes de inventario que se obtienen de las transacciones de inventario se ven afectados cuando consolida transacciones de inventario. Estos informes incluyen el informe de antigüedad del inventario y los informes de valor del inventario.
  • Las previsiones de inventario pueden verse afectadas si se ejecutan durante el horizonte temporal de períodos consolidados.

Requisitos previos

Las transacciones de inventario solo se pueden consolidar durante los períodos en los que se cumplen las siguientes condiciones:

  • El período del libro mayor debe estar cerrado.
  • El cierre de inventario debe realizarse durante o después de la fecha de fin del período de la consolidación.
  • El periodo debe ser al menos un año antes de la fecha de inicio del periodo de la consolidación.
  • No debe haber ningún recálculo de inventario existente.

Consolide sus transacciones de inventario

Para consolidar transacciones de inventario, seguir 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:

    • Fecha de inicio en el periodo de contabilidad cerrado: Seleccione la fecha de transacción más próxima que incluir en la consolidación.
    • Hasta la fecha en el periodo de contabilidad cerrado: Seleccione la fecha de transacción más reciente que 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. Seguir los pasos habituales para los 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.

    Recibirá un mensaje que indicará que su trabajo de consolidación de transacciones de inventario se ha agregado a la cola de lotes. El trabajo comienza a consolidar transacciones de inventario del periodo seleccionado.

Ver transacciones de inventario consolidadas

La página Consolidación de transacciones de inventario muestra el historial completo de consolidación. 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, Seleccionar uno de los siguientes valores para filtrar las consolidaciones que se muestran en la cuadrícula:

  • Activo : muestra solo las consolidaciones activas.
  • Todas : 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.
  • Fecha desde: 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 que se creó la consolidación .
  • Detener actualización actual: una marca de verificación indica que la consolidación está en curso, 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 de encima de la cuadrícula proporciona los siguientes botones que puede usar para trabajar con una consolidación seleccionada:

  • Transacciones consolidadas: vea todos los detalles de la consolidación seleccionada. La página Transacciones consolidadas que aparece muestra todas las transacciones de la consolidación.

    Para ver más información sobre una transacción específica en la página Transacciones consolidadas, Seleccionar esa opción en la cuadrícula y, a continuación, en el panel de acciones, SeleccionarDetalles de transacción consolidada. La página Detalles de transacción consolidada que aparece muestra información como el registro en el libro mayor, las referencias de subdiarios relacionados y las dimensiones financieras.

  • Pausar: pausa una consolidación seleccionada que se esté procesando actualmente. La pausa surte efecto solo después de que se genere 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 su campo Detener actualización actual.

  • Reanudar : reanuda el procesamiento de una consolidación seleccionada que actualmente está en pausa.

Ampliar el código para admitir campos personalizados

Si la InventTrans tabla contiene uno o más campos personalizados, es posible que deba extender el código para admitirlos, dependiendo de cómo se llamen.

  • Si los campos personalizados de la InventTrans tabla tienen los mismos nombres de campo que en la InventtransArchive tabla, 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;
    }
}