V10 RecursosReferência
RecursosReferência
Referência
Voltar | Lista de artigos

Como efetuar corretamente drilldowns?

Última alteração a 29/09/2021

Os projetos de extensibilidade podem conter código para fazer o drilldown para a maioria das entidades do ERP ou até mesmo para documentos e algumas explorações.

Para o fazer, é necessário conhecer os códigos internos utilizados pelo ERP para instanciar o ecrã em questão e carregar a informação pretendida. Estes códigos são compostos por vários elementos, desde a indicação do módulo a que pertence o ecrã, à própria manutenção, ao identificador do documento, etc.

O método para executar um drilldown é o DrilDownLista, disponível na interface pública da plataforma (StdPlatBS100.StdBSInterfPub). Esta interface está disponível em qualquer CustomClass, CustomForm ou na subscrição dos eventos de interface: PSO.DrillDownLista.

A lista seguinte representa os códigos mais importantes e mais utilizados, associados ao respetivo módulo.

NomeAplicação /MóduloEventoAudit (ex: manutenção)Parâmetros
ArtigosBASGCP_MOSTRAMANUTENCAOmnuTabArtigoCódigo do artigo
ClientesBASGCP_MOSTRAMANUTENCAOmnuTabClientesCódigo do cliente
Ciclo de VendasCRMCRM_MOSTRAMANUTENCAOmnuTabCabecCicloVendaCódigo do ciclo
AtividadesCRMCRM_MOSTRAMANUTENCAOmnuTabActividadesIdenditicador da actividade
Diários de TrabalhoGPRGPR_MOSTRAMANUTENCAODiariosTrabalhoCódigo do diário
Plano de ContasCBLCBL_PlanoContasn/aExercicio; Conta (*)
Processos STPSTPevtDD_STP_Processosn/aChave do processo (*)
Documento de VendaVNDGCP_EditarDocumenton/aChave do documento (*)
Documento de CompraCMPGCP_EditarDocumenton/aChave do documento (*)
Documento ContabilísticoCBLCBL_EditaDocumentoIDn/aChave do documento (*)
Extractos de CCCCTGCP_MOSTRAEXPLORACAOmnuExpCCExtractoTipo de Entidade; Entidade
Pendentes de CCCCTGCP_MOSTRAEXPLORACAOmnuExpCCPendentesGrelhaTipo de Entidade; Entidade
Extracto BancárioTESGCP_MOSTRAEXPLORACAOmnuExpExtractoBancarioConta; Dt Inicial; Dt Final

(*) Mais detalhes abaixo.

Basta referenciar a Assembly ConstantesPrimavera100 no seu projeto para facilmente encontrar em constantes todos os códigos Audit. A tabela seguinte mostra alguns exemplos.

AuditConstante
mnuTabArtigoConstantesPrimavera100.Audit.TAB_ARTIGOS
mnuTabClientesConstantesPrimavera100.Audit.TAB_CLIENTES
mnuTabCabecCicloVendaConstantesPrimavera100.Audit.TAB_CICLO_VENDAS
mnuTabActividadesConstantesPrimavera100.Audit.TAB_ACTIVIDADES
mnuExpCCExtractoConstantesPrimavera100.Audit.EXP_CC_EXTRACTO
mnuExpCCPendentesGrelhaConstantesPrimavera100.Audit.EXP_CC_PENDENTES_GRELHA
mnuExpExtractoBancarioConstantesPrimavera100.Audit.DOC_EXTRACTO

De seguida, mostramos alguns exemplos de como usar os códigos para abrir manutenções, documentos e explorações nos diferentes módulos.

Manutenções

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);
}

Este método pode ser colocado numa classe partilhada para mostrar qualquer manutenção do ERP, bastando apenas indicar os códigos mencionados em cima.

Conhecendo os códigos das manutenções, o código dos eventos e o módulo/aplicação a que pertencem, podemos invocar o método. Nos exemplos seguintes, o Param1 recebe o código da manutenção e o Param2 recebe a chave do respetivo registo a carregar.

NOTA: Nas manutenções, o primeiro parâmetro deve ser sempre o código da manutenção.

Clientes (BAS)

ExecutaDrillDown("BAS", "GCP_MOSTRAMANUTENCAO", "mnuTabClientes", "SOFRIO");

Fornecedores (BAS)

ExecutaDrillDown("BAS", "GCP_MOSTRAMANUTENCAO", "mnuTabFornecedores", "F0001");

Artigos (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");

Diários de Trabalho (GPR)

ExecutaDrillDown("GPR", "GPR_MOSTRAMANUTENCAO", "DiariosTrabalho", "20");

(*) Nos exemplos seguintes, não é indicado o código da manutenção, uma vez que o próprio código do evento já indica a manutenção a mostrar. Neste caso, os parâmetros referem-se apenas à chave do registo que pode, em alguns casos, ser composta.

Plano de Contas (CBL)

ExecutaDrillDown("CBL", "CBL_PlanoContas", 2019, "21111001");

Processos (STP)

ExecutaDrillDown("STP", "evtDD_STP_Processos", "PRC/000/2018/1");

Documentos de logística

O método mostrado em cima pode ser usado para mostrar estes documentos, sendo apenas necessário indicar os parâmetros corretos.

Para editar um documento da logística, como é o caso dos documentos de Vendas (VND), Compras (CMP), Internos (INT), Inventário (INV), Contas Correntes (CCT) e Tesouraria (TES), além de ser necessário indicar o código do evento que provoca o drilldown (GCP_EditarDocumento) é ainda necessário indicar todos os parâmetros chave para a edição de um documento deste tipo, respeitando esta ordem: Módulo, Filial, Tipo de Documento, Série e Número do Documento.

O exemplo seguinte mostra como editar o documento FA 2019/1 do módulo das Vendas.

ExecutaDrillDown("VND", "GCP_EditarDocumento", "V", "000", "FA", "2019", "1");

Existe, no entanto, outra forma de editar estes documentos sem indicar todos os parâmetros, usando apenas o identificador do documento (campo Id da tabela de cabeçalhos do documento respetiva). Com esta opção, o evento a indicar é o GCP_EditarDocumentoId e os únicos parâmetros que deve passar são o Módulo e o Identificador.

ExecutaDrillDown("VND", "GCP_EditarDocumentoId", "V", "BCB54D22-739A-40C0-878F-ECFBE6EDC369");

Documentos da contabilidade

O exemplo seguinte mostra como editar um documento contabilístico em que o único parâmetro a indicar é o identificador do documento (campo Id da tabela CabecMovCBL) através de drilldown.

Documento Contabilistico (CBL)

ExecutaDrillDown("CBL", "CBL_EditaDocumentoID", "47F38B48-9201-11DC-B190-0020E024149C");

Explorações

Também é possível efetuar drilldown para as explorações do ERP. No entanto, devido às especificidades destes ecrãs, é necessário tratá-las individualmente, consoante o caso. A principal especificidade, comum a todos os drilldowns de explorações, é o nome do primeiro parâmetro que terá obrigatoriamente de ser "Exploracao". Quanto aos restantes parâmetros, algumas explorações requerem parâmetros específicos (nome e valor) para carregar a informação.

Os exemplos seguintes mostram como fazer o drilldown para algumas explorações.

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;
}

Extratos de Conta Corrente (CCT)

ExecutaDrillDownExploracaoCCT("mnuExpCCExtracto", "C", "SOFRIO");

Esta exploração requer os parâmetros Tipo de Entidade e Entidade.

Pendentes (CCT)

ExecutaDrillDownExploracaoCCT("mnuExpCCPendentesGrelha", "C", "SOFRIO");

Esta exploração também requer os parâmetros Tipo de Entidade e Entidade.

Extractos Bancários (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");

Esta exploração utiliza os parâmetros Conta, Data Inicial e Data Final, sendo que as "Datas" (os dois últimos) não são obrigatórios.

Pode consultar mais exemplos de drilldown neste repositório do GitHub.

Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.

login para deixar a sua opinião.

Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!
Artigos Relacionados
Características das entidades e serviços Conceito de integração Conceito de extensibilidade Como registar projetos de extensibilidade? Boas práticas de organização de projetos de integração