¿Cómo realizar drilldown correctamente?
Los proyectos de extensibilidad pueden contener código para realizar el drilldown para la mayoría de las entidades del ERP o incluso para documentos y algunas exploraciones. Para ello, es necesario conocer los códigos internos que utiliza el ERP para instanciar la pantalla en cuestión y cargar la información deseada. Estos códigos se componen de varios elementos, desde la indicación del módulo al que pertenece la pantalla hasta el propio mantenimiento, pasando por el identificador del documento, etc. El método para ejecutar un drilldown es DrilDownLista, disponível na interface pública da plataforma (StdPlatBS100.StdBSInterfPub). Esta interfaz está disponible en cualquier CustomClass, CustomForm o al suscribirse a eventos de la interfaz: PSO.DrillDownLista. La siguiente lista representa los códigos más importantes y más utilizados asociados al módulo correspondiente. (*) Más detalles abajo. Solo tiene que hacer referencia a la assembly ConstantesPrimavera100 en su proyecto para encontrar fácilmente todo el código en constantes Audit. La siguiente tabla muestra algunos ejemplos. He aquí algunos ejemplos de cómo utilizar los códigos para abrir mantenimientos, documentos y exploraciones en los distintos módulos. Este método se puede colocar en una clase compartida para mostrar cualquier mantenimiento del ERP, indicando simplemente los códigos mencionados anteriormente. Una vez que conocemos los códigos de los mantenimientos, el código de los eventos y el módulo/aplicación al que pertenecen, podemos invocar el método. En los siguientes ejemplos, el Param1 recibe el código de mantenimiento y el Param2 recibe la clave del respectivo registro que se va a cargar. NOTA: En los mantenimientos, el primer parámetro debe ser siempre el código de mantenimiento. (*) En los siguientes ejemplos, no se indica el código del mantenimiento, ya que el propio código del evento ya indica el mantenimiento a mostrar. En este caso, los parámetros solo se refieren a la clave de registro, que en algunos casos puede ser compuesta. El método mostrado anteriormente puede utilizarse para visualizar estos documentos, solo tiene que introducir los parámetros correctos. Para editar un documento logístico, como los documentos de Ventas (VND), Compras (CMP), Internos (INT), Inventario (INV), Cuentas corrientes (CCT) y Tesorería (TES), además de necesitar indicar el código del evento que desencadena el drilldown (GCP_EditarDocumento) también es necesario indicar todos los parámetros clave para la edición de un documento de este tipo, respetando este orden: Módulo, Filial, Tipo de documento, Serie y Número de documento. El siguiente ejemplo muestra cómo editar el documento FA 2019/1 del módulo de Ventas. Existe, no obstante, otra forma de editar estos documentos sin especificar todos los parámetros, utilizando solo el identificador del documento (campo Id de la tabla de cabeceras del documento correspondiente). Con esta opción, el evento a indicar es GCP_EditarDocumentoId y los únicos parámetros que tiene que pasar son el Módulo y el Identificador. El siguiente ejemplo muestra cómo editar un documento contable en el que el único parámetro a introducir es el identificador del documento (campo Id de la tabla CabecMovCBL) a través del drilldown. También puede realizar drilldown para las exploraciones del ERP. Sin embargo, debido a las especificidades de estas pantallas, es necesario tratarlas individualmente, según el caso. La principal especificidad, común a todos los drilldowns de exploraciones es el nombre del primer parámetro, que debe ser obligatoriamente "Exploracao". En cuanto a los demás parámetros, algunas exploraciones requieren parámetros específicos (nombre y valor) para cargar la información. Los siguientes ejemplos muestran cómo realizar el drilldown para algunas exploraciones. Esta exploración requiere los parámetros Tipo de entidad y Entidad. Esta exploración requiere también los parámetros Tipo de entidad y Entidad. Esta exploración utiliza los parámetros Cuenta, Fecha inicial, y Fecha final; las "Fechas" (los dos últimos) no son obligatorios. Puede consultar más ejemplos de drilldown en este repositorio de GitHub.Nombre Aplicación/Módulo Evento Audit (ej: mantenimiento) Parámetros Artículos BAS GCP_MOSTRAMANUTENCAO mnuTabArtigo Código del artículo Cliente BAS GCP_MOSTRAMANUTENCAO mnuTabClientes Código de cliente Ciclo de ventas CRM CRM_MOSTRAMANUTENCAO mnuTabCabecCicloVenda Código del ciclo Actividades CRM CRM_MOSTRAMANUTENCAO mnuTabActividades Identificador de actividad Diarios de trabajo GPR GPR_MOSTRAMANUTENCAO DiariosTrabalho Código del diario Plan de cuentas CBL CBL_PlanoContas n/a Ejercicio; Cuenta (*) Procesos STP STP evtDD_STP_Processos n/a Clave de proceso (*) Documento de ventas VND GCP_EditarDocumento n/a Clave del documento (*) Documento de compra CMP GCP_EditarDocumento n/a Clave del documento (*) Documento contable CBL CBL_EditaDocumentoID n/a Clave del documento (*) Extractos de CC CCT GCP_MOSTRAEXPLORACAO mnuExpCCExtracto Tipo de entidad; Entidad Pendientes de CC CCT GCP_MOSTRAEXPLORACAO mnuExpCCPendentesGrelha Tipo de entidad; Entidad Extracto bancario TES GCP_MOSTRAEXPLORACAO mnuExpExtractoBancario Cuenta; F. inicial; F. final Audit Constante mnuTabArtigo ConstantesPrimavera100.Audit.TAB_ARTIGOS mnuTabClientes ConstantesPrimavera100.Audit.TAB_CLIENTES mnuTabCabecCicloVenda ConstantesPrimavera100.Audit.TAB_CICLO_VENDAS mnuTabActividades ConstantesPrimavera100.Audit.TAB_ACTIVIDADES mnuExpCCExtracto ConstantesPrimavera100.Audit.EXP_CC_EXTRACTO mnuExpCCPendentesGrelha ConstantesPrimavera100.Audit.EXP_CC_PENDENTES_GRELHA mnuExpExtractoBancario ConstantesPrimavera100.Audit.DOC_EXTRACTO Mantenimientos
void ExecutaDrillDown(string Aplicacao, string Evento, string Param1, string Param2 = ", string Param3 = ", string Param4 = ", string Param5 = ")
{
StdBESqlCampoDrillDown campoDrillDown = new StdBESqlCampoDrillDown
{
ModuloNotificado = Aplicacao,
Tipo = StdBESqlTipos.EnumTipoDrillDownListas.tddlEventoAplicacao,
Evento = Evento
};
StdBEValoresStr param = new StdBEValoresStr();
param.InsereNovo("Param1", Param1);
if (!string.IsNullOrWhiteSpace(Param2))
param.InsereNovo("Param2", Param2);
if (!string.IsNullOrWhiteSpace(Param3))
param.InsereNovo("Param3", Param3);
if (!string.IsNullOrWhiteSpace(Param4))
param.InsereNovo("Param4", Param4);
if (!string.IsNullOrWhiteSpace(Param5))
param.InsereNovo("Param5", Param5);
PSO.DrillDownLista(campoDrillDown, param);
}
Clientes (BAS)
ExecutaDrillDown("BAS", "GCP_MOSTRAMANUTENCAO", "mnuTabClientes", "SOFRIO");
Proveedores (BAS)
ExecutaDrillDown("BAS", "GCP_MOSTRAMANUTENCAO", "mnuTabFornecedores", "F0001");
Artículos (BAS)
ExecutaDrillDown("BAS", "GCP_MOSTRAMANUTENCAO", "mnuTabArtigo", "A0001");
Contactos (CRM)
ExecutaDrillDown("CRM", "CRM_MOSTRAMANUTENCAO", "mnuTabCabecCicloVenda", "CV_HW");
Actividades (CRM)
ExecutaDrillDown("CRM", "CRM_MOSTRAMANUTENCAO", "mnuTabPlanoActividades", "A29DF423-4D63-4A29-B42C-6DB70546CB7A");
Diarios de trabajo (GPR)
ExecutaDrillDown("GPR", "GPR_MOSTRAMANUTENCAO", "DiariosTrabalho", "20");
Plan de cuentas (CBL)
ExecutaDrillDown("CBL", "CBL_PlanoContas", 2019, "21111001");
Procesos (STP)
ExecutaDrillDown("STP", "evtDD_STP_Processos", "PRC/000/2018/1");
Documentos de logística
ExecutaDrillDown("VND", "GCP_EditarDocumento", "V", "000", "FA", "2019", "1");
ExecutaDrillDown("VND", "GCP_EditarDocumentoId", "V", "BCB54D22-739A-40C0-878F-ECFBE6EDC369");
Documentos de contabilidad
Documento contable (CBL)
ExecutaDrillDown("CBL", "CBL_EditaDocumentoID", "47F38B48-9201-11DC-B190-0020E024149C");
Exploraciones
public void ExecutaDrillDownExploracaoCCT(string Exploracao, string TipoEntidade, string Entidade)
{
StdBESql100.StdBESqlCampoDrillDown objCampoDrillDown = new StdBESql100.StdBESqlCampoDrillDown
{
ModuloNotificado = "CCT",
Tipo = StdBESql100.StdBESqlTipos.EnumTipoDrillDownListas.tddlEventoAplicacao,
Evento = "GCP_MOSTRAEXPLORACAO"
};
StdBE100.StdBEValoresStr objParam = new StdBE100.StdBEValoresStr();
objParam.InsereNovo("Exploracao", Exploracao);
objParam.InsereNovo("TipoEntidade", TipoEntidade);
objParam.InsereNovo("Entidade", Entidade);
PSO.DrillDownLista(objCampoDrillDown, objParam);
objCampoDrillDown = null;
objParam = null;
}
Extractos de cuenta corriente (CCT)
ExecutaDrillDownExploracaoCCT("mnuExpCCExtracto", "C", "SOFRIO");
Pendientes (CCT)
ExecutaDrillDownExploracaoCCT("mnuExpCCPendentesGrelha", "C", "SOFRIO");
Extractos bancarios (TES)
public void ExecutaDrillDownExploracaoTES(string Exploracao, string Conta, string DataInicial, string DataFinal)
{
StdBESql100.StdBESqlCampoDrillDown objCampoDrillDown = new StdBESql100.StdBESqlCampoDrillDown
{
ModuloNotificado = "TES",
Tipo = StdBESql100.StdBESqlTipos.EnumTipoDrillDownListas.tddlEventoAplicacao,
Evento = "GCP_MOSTRAEXPLORACAO"
};
StdBE100.StdBEValoresStr objParam = new StdBE100.StdBEValoresStr();
objParam.InsereNovo("Exploracao", Exploracao);
objParam.InsereNovo("Conta", Conta);
objParam.InsereNovo("DataInicial", DataInicial);
objParam.InsereNovo("DataFinal", DataFinal);
PSO.DrillDownLista(objCampoDrillDown, objParam);
objCampoDrillDown = null;
objParam = null;
}
ExecutaDrillDownExploracaoTES("mnuExpExtractoBancario", "CXREC", "1/1/2018", "31/12/2018");
login para deixar a sua opinião.