O PHC GO dá agora a possibilidade ao parceiro de criar soluções à medida dos seus clientes que ficam disponíveis na PHC GO Store para todos os clientes PHC GO (nacionais e internacionais).
Os processamentos de utilizador é uma das peças tecnológicas que permite a construção de um processo de emissão de registos em série para uma determinada tabela.
manage_searchTópicos Relacionados
Para mais informações relacionadas com add-ons do PHC GO, estão disponíveis os seguintes manuais:
INFORMAÇÃO PRINCIPAL
Esta área do ecrã é composta pelo seguinte campo:
Nome: Refere-se ao nome que irá identificar o processamento.
Título: Título do processamento. O título que preencher neste campo será aquele que irá ser exibido nos processamentos.
DADOS GERAIS
O tabulador de Dados Gerais é composto por vários separadores, os quais iremos detalhar individualmente. Para obter mais informações sobre os campos de um separador, carregue em Mostrar/Ocultar referente ao separador específico (ou em alternativa, pode carregar em Abrir todos).
Entidade: Nome da entidade sobre qual o processamento será executado.
É processamento de registo: Processamento que será usado tendo somente um registo dado fonte.
É processamento de entidade: Processamento que será usado tendo múltiplos registos de uma entidade como dados fonte.
Entrada principal do menu: Menu onde será disponibilizado o processamento.
Entrada secundária do menu: Sobre o menu Gestão, escolher em qual dos sub-menus queremos que o processamento seja disponibilizados. (Campo apenas disponível quando se seleciona a opção Gestão no campo Entrada principal do menu.
Título da ação de execução: Sendo um processamento de registo, é o texto que aparecerá no botão de executar a ação.
Código de disponibilidade da ação: Permite mostrar a ação consoante uma determinada condição, ou seja, caso defina um simples:
A ação é sempre exibida no registo.
Por outro lado, sobre a entidade de
Documentos de Faturação, caso defina:
return currentSeries.tiposaft === "OT"
A ação apenas é apresentada nos documentos que tenham um tipo de SAF-T(PT) = OT - Documento Interno.
Descrição do Processamento: Campo para incluir uma descrição geral do processamento.
Através desta área, é onde define as variáveis que serão exibidas no primeiro passo do assistente do processamento. Estas variáveis podem ser usadas tanto no código de Dados a processar como no Código de execução do processamento.
Para incluir dados iniciais clique no botão
add e configure tantos dados iniciais consoante as suas necessidades.
A grelha é composta pelos seguintes campos (colunas):
Número: Trata-se do nº interno atribuído ao dado inicial e que representa a ordem pela qual vem exibido ao aceder à análise.
O valor deste campo é incrementado automaticamente em uma unidade com base no valor do último registo de dado inicial criado na grelha, muito embora, possa posteriormente alterar a ordem dos dados iniciais conforme pretenda.
Nome: Campo para preencher o nome que terá o dado inicial.
Tipo: Campo para determinar o tipo de dado inicial.
Tem disponível para seleção um dos seguintes tipos: Texto, Mês, Numérico, Lógico, Data, Ano, Tabela, Percentagem, Moeda base e Ficheiro.
Opções: Se tipo "Tabela": lista de opções, separada por vírgulas. Se tipo "Ano": ano inicial com 4 dígitos: Este campo pode albergar dados de diversas formas, em função do tipo de dado selecionado no campo anterior.
Dicas
a) Para dados de tipo
Tabela pode preencher neste campo entre outras coisas:
» Um dado inicial que permita selecionar um item a partir de uma lista de itens fixos (separados por vírgula). Por exemplo, um campo dropdown para selecionar o estado para visualizar encomendas:
Todas,Abertas,Fechadas
» Um dado inicial que permita selecionar um item a partir de uma lista que pode variar em função de uma query SQL (implica ativar a coluna
Lista é uma query)
Exemplo 1 - query que retorna o nome de cada um dos clientes presentes na tabela de Clientes (CL) sendo que o 1º item representa "Todos os Clientes"
select uval from (select ´Todos os Clientes´ as uval from cl (nolock)
union select distinct nome as uval from cl (nolock)) a
ORDER BY CASE uval WHEN ´Todos os Clientes´ THEN 1 ELSE 2 END, uval
Exemplo 2 - query que retorna o nome das séries de documentos de faturação (tabela TD), que sejam do tipo ´FT´, ´FR´, ´FS´ ou ´NC´, e que o 1º item representa "Todos os Tipos de Documentos"
select uval from (select ´Todos os Tipos de Documentos´ as uval from td (nolock) union
select distinct nmdoc as uval from td (nolock) where
td.tiposaft=´FT´ or
td.tiposaft=´NC´ or
td.tiposaft=´FR´ or
td.tiposaft=´FS´) a
ORDER BY CASE uval WHEN ´Todos os Tipos de Documentos´ THEN 1 ELSE 2 END, uval
Lista é uma query: A lista deve ser uma expressão de SQL que retorna uma lista com um campo designado por "uval" (ver exemplos anteriores).
Obrigatório: Indica que este dado inicial é de preenchimento obrigatório.
Nº de carateres: Número máximo de carateres que este dado inicial pode receber. Se deixar o campo a zero não terá limite de nº de caracteres. O preenchimento desta coluna da grelha apenas se aplica a dados iniciais do tipo numérico e caracter.
Decimais: Número de decimais caso o campo seja "numérico".
v.d texto: Valor por defeito para este dado inicial caso seja do tipo "Texto".
v.d. número: Valor por defeito para este dado inicial caso seja do tipo "Numérico".
v.d. lógico: Valor por defeito para este dado inicial caso seja do tipo "Lógico".
v.d. data: Valor por defeito para este dado inicial caso seja do tipo "data". Neste caso, este campo representa o nº de dias de diferença para a data atual. Por exemplo, -365 neste campo, colocará no dado inicial a data de há 365 dias atrás.
Tooltip: Informação a explicar o âmbito do dado inicial.
Colunas a ocupar: Indica quantas colunas do layout, o campo de dado inicial irá ocupar. Cada linha do formulário contém até 4 colunas.
Colunas a pular: Indica quantas colunas à esquerda do campo de dado inicial deve pular.
Rejeita cache: Caso ative este campo, o valor preenchido pelo utilizador do processamento para a variável do dado inicial não será guardada na base de dados com o último valor introduzido (ou seja, sempre que o processamento for inicializado, o valor da variável de dado inicial será automaticamente preenchido pela aplicação, tendo por base o valor preenchido nos campos v.d. texto, v.d. número, v.d. lógico ou v.d. data (conforme o tipo de dado definido, se texto, numérico, lógico, data,..).
tips_and_updatesDicas
Por exemplo, para os campos de tipo
Ano, a framework vai olhar primeiramente se guarda cache
(rejeita cache desativado) e em caso afirmativo recorre ao último valor guardado em tabela.
Caso não guarde cache
(rejeita cache ativado), então a framework irá olhar para o valor definido no campo
v.d.data, e caso não esteja preenchido, olha para o valor do campo
v.d.texto.
Se os campos anteriores não contemplarem qualquer valor, então o campo virá vazio de conteúdo.
Exemplos:
(I) se rejeita a cache e tem vd.data = -2 <-- toma sempre como base o ano corrente (ex: 2023) e diminui 2 anos
Então, na prática o campo "Ano" = 2021
----------------------------------------------------------
(II) se rejeita a cache e tem vd.data = vazio e v.d.texto= 2017
Então, na prática o campo "Ano" = 2017
----------------------------------------------------------
(III) se rejeita a cache e tem vd.data = vazio e v.d.texto= vazio
Então, na prática o campo "Ano" = vazio
----------------------------------------------------------
(IV) se rejeita a cache e tem vd.data = 2
Então, na prática o campo "Ano" = vazio (porque estamos no ano corrente + 2 anos) seria um ano superior ao ano corrente, logo nesses casos o valor vem vazio.
Premissa: Os dados iniciais de tipo Ano só suportam anos até ao ano corrente.
sticky_note_2Notas
Para usar estas variáveis nos Dados a processar (código SQL), basta definir por exemplo, #1# (número da variável entre cardinais), para cada uma das variáveis.
Para usar as variáveis no Código de execução (código VB.NET), é seguir o seguinte exemplo:
Código de atualização de campos: Código para definir o comportamento do estado de um campo, podendo-se alterar por exemplo a visibilidade, o estado de desabilitado, o estado de obrigatoriedade e o valor dos campos.
tips_and_updatesDicas
Para esconder o variável número 1 do processamento:
fieldsStates("1").Hidden = TRUE
Para definir um valor por defeito a uma variável:
fieldsStates("2").Value = "Hello World"
Snapshots: Através dos campos Snapshot principal e Snapshot secundário, é possível a utilização de snapshots no processamento, sendo o valor destes exibido ao utilizador no segundo passo do processamento.
É também possível, através dos campos Número da variável inicial, a passagem das variáveis utilizadas no processamento, para o cálculo do snapshot (sendo que o valor deste campo diz respeito ao índice da variável a ser utilizada [seguem a mesma ordem que nos fieldStates]).
É um programa VB.NET: Permite definir que o código dos dados a processar é um programa VB.NET ou SQL.
Código para obter os dados de origem do processamento: Código que irá ser usado para obter os dados de origem do processamento.
É importante que os dados retornados por esse código, tanto VB.NET como SQL tenham uma propriedade chamada Stamp, que é chave única de cada registo. Exemplo:
select ft.ftstamp as stamp, ft.fno, ft.nmdoc from ft
sticky_note_2Notas
Quando temos um processamento de registo, no código dos Dados a processar em SQL é possível usar o #STAMP# para se referir ao stamp do registo que está a ser processado.
Em VB.NET é possível acessar o stamp do registo que está a ser processado através do parâmetro targetRecordStamp.
É importante também referir que quando o código dos dados a processar é um programa SQL, o filtro de dados do processamento funciona de forma automática, ou seja, está implementado de base na aplicação.
No entanto, por questões de performance, quando o código dos dados a processar é um programma VB.NET, o filtro deverá ser implementado pelo próprio programador, utilizando o parâmetro
searchExpression (tal como mostra o exemplo seguinte):
Dim DocumentsList = SDK.Query.GetEntityData("select ft.ftstamp as stamp, ft.fno, ft.nmdoc from ft where (Cast(nmdoc AS varchar) LIKE ´%" + searchExpression + "%´ OR Cast(fno AS varchar) LIKE ´%" + searchExpression + "%´)")
return DocumentsList
Colunas da tabela de apresentação dos dados de origem: Configuração de colunas de apresentação dos dados de origem.
infoInformações
A coluna Campo diz respeito aos campos que definiu no Código para obter os dados de origem do processamento.
Pode ser executado para todos os registos: Caso este campo não esteja selecionado, o processamento não terá disponível o botão de emissão para todos os registos, desabilitando os campos Texto do botão de executar sobre todos os registos e Tooltip do botão de executar sobre todos os registos.
Texto do botão de executar sobre todos os registos: Texto que será exibido no botão de executar sobre todos os registos.
Tooltip do botão de executar sobre todos os registos: Mensagem na tooltip que será exibida quando o utilizador colocar o ponteiro do rato em cima do botão de executar o processamento sobre todos os registos.
Texto do botão de executar sobre os registos selecionados: Texto que será exibido no botão de executar apenas sobre os registos selecionados.
Tooltip do botão de executar sobre os registos selecionados: Mensagem na tooltip que será exibida quando o utilizador colocar o ponteiro do rato em cima do botão de executar o processamento apenas sobre os registos selecionados.
Código da execução: Código VB.NET que receberá uma lista de stamps selecionados no passo de seleção dos dados de origem do processamento e fará a execução do mesmo. Assim, poderá usar os seguintes parâmetros:
selectedItems: Lista de objectos selecionados pelo utilizador nos dados a processar.
fieldsStates: Dicionário que guarda os estados de Hidden, Disabled e Required e também o valor das variáveis definidas nos Dados inicias.
successList: Lista de objetos que serão usados para exibir os registos processados com sucesso no processamento. Esta lista, tem que ter uma propriedade chamada stamp, que é um identificador único de cada registo. Exemplo:
For Each itemFt As Object In SelectedItems
successList.Add(New With {
.stamp = itemFt.ftstamp,
.fno = itemFt.fno,
.nmdoc = itemFt.nmdoc
})
Next
messagesList: Lista de MessageVO usada para definir mensagens que serão exibidas no resultado do processamento.
targetRecordStamp: Este parâmetro está disponível apenas em processamentos de registo e guarda o stamp do registo a ser processado.
Nesta área, pode configurar as colunas que serão usadas para a exibição dos resultados.
infoInformações
A coluna Campo diz respeito aos campos que definiu no objeto successList do Código da execução.
Sobre esta área de Traduções, pode definir as respetivas traduções dos campos que foram criados na configuração do processamento.
infoInformações
Para obter mais informações a respeito das traduções e processamentos, carregue
aqui
.