Como efetuar corretamente drilldowns?
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. (*) 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. De seguida, mostramos alguns exemplos de como usar os códigos para abrir manutenções, documentos e explorações nos diferentes módulos. 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. (*) 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. 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. 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. 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. 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. Esta exploração requer os parâmetros Tipo de Entidade e Entidade. Esta exploração também requer os parâmetros Tipo de Entidade e Entidade. 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.Nome Aplicação /Módulo Evento Audit (ex: manutenção) Parâmetros Artigos BAS GCP_MOSTRAMANUTENCAO mnuTabArtigo Código do artigo Clientes BAS GCP_MOSTRAMANUTENCAO mnuTabClientes Código do cliente Ciclo de Vendas CRM CRM_MOSTRAMANUTENCAO mnuTabCabecCicloVenda Código do ciclo Atividades CRM CRM_MOSTRAMANUTENCAO mnuTabActividades Idenditicador da actividade Diários de Trabalho GPR GPR_MOSTRAMANUTENCAO DiariosTrabalho Código do diário Plano de Contas CBL CBL_PlanoContas n/a Exercicio; Conta (*) Processos STP STP evtDD_STP_Processos n/a Chave do processo (*) Documento de Venda VND GCP_EditarDocumento n/a Chave do documento (*) Documento de Compra CMP GCP_EditarDocumento n/a Chave do documento (*) Documento Contabilístico CBL CBL_EditaDocumentoID n/a Chave do documento (*) Extractos de CC CCT GCP_MOSTRAEXPLORACAO mnuExpCCExtracto Tipo de Entidade; Entidade Pendentes de CC CCT GCP_MOSTRAEXPLORACAO mnuExpCCPendentesGrelha Tipo de Entidade; Entidade Extracto Bancário TES GCP_MOSTRAEXPLORACAO mnuExpExtractoBancario Conta; Dt Inicial; Dt 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 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);
}
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");
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
ExecutaDrillDown("VND", "GCP_EditarDocumento", "V", "000", "FA", "2019", "1");
ExecutaDrillDown("VND", "GCP_EditarDocumentoId", "V", "BCB54D22-739A-40C0-878F-ECFBE6EDC369");
Documentos da contabilidade
Documento Contabilistico (CBL)
ExecutaDrillDown("CBL", "CBL_EditaDocumentoID", "47F38B48-9201-11DC-B190-0020E024149C");
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");
Pendentes (CCT)
ExecutaDrillDownExploracaoCCT("mnuExpCCPendentesGrelha", "C", "SOFRIO");
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");
login para deixar a sua opinião.