Criar documentos dinâmicos com 4D Write Pro na aplicação Qodly

Num ambiente profissional, em que a gestão e a produção de documentos são cruciais, é essencial dispor de ferramentas poderosas e flexíveis. Imagine ser capaz de desenhar modelos de documentos dinâmicos diretamente de seu cliente Desktop, integrando fórmulas e dados de sua base de dados, e depois gerar esses documentos com um único clique através de uma interface web intuitiva. Isso é precisamente o que 4D Write Pro e 4D Qodly Pro permitem fazer!

No blog dessa semana, vamos explorar como essas duas soluções se complementam perfeitamente para automatizar e otimizar seus processos de documentos. Descobrirá como criar modelos personalizados em 4D Write Pro e como, graças a 4D Qodly Pro, usuários web podem inserir os dados necessários, acionar a geração de documentos, e até mesmo escolher armazená-los no banco de dados ou retorná-los através de um atributo calculado.

Para demonstrar esse processo, usaremos a aplicação Performance Review, que está disponível para download. Prepare-se para transformar a forma como cria e gere os seus documentos, simplificando os seus fluxos de trabalho e aumentando a eficiência.

Aplicação Performance Review

Criando Modelos no Desktop Client

4D Write Pro é uma poderosa ferramenta de processamento de texto cuja força principal está em sua habilidade de criar modelos de documentos ligados a seu banco de dados. Essa funcionalidade permite gerar automaticamente vários tipos de documentos: cartas, contratos, faturas, catálogos, relatórios de despesas, e muito mais.

Na aplicação Performance Review, são utilizados vários modelos de documentos, consoante o departamento em causa. Por exemplo:

Modelo de OP’s

 

Modelo de controlo de qualidade

blank

Estes modelos incorporam fórmulas dinâmicas diretamente ligadas à base de dados, facilitando a criação de documentos personalizados para cada departamento.

Um formulário na aplicação Desktop permite-lhe criar estes modelos de uma forma simplificada. Para adicionar facilmente fórmulas, uma lista suspensa sugere todas as fórmulas relevantes para o modelo.

blank

Estas fórmulas são definidas num arquivoJSON chamado “WPexpression.json”.

Aqui está um extrato:

{
    "expressão": [{
            "nome": "apelido",
            "fórmula": "Este.dados.revisão.Empregado.Apelido"
        }, {
            "name": "Firstname",
            "fórmula": "Isto.dados.revisão.Empregado.Nome"
        }, {
            "name": "CollaboratorName",
            "formula": "This.data.review.Employee.Firstname+\" \"+Este.dados.revisão.Empregado.Apelido"
        }
    ]
}

Para saber mais sobre o 4D Write Pro e o ORDA, leia este blogue: ORDA e 4D Write Pro: A dupla poderosa!

Para simplificar a criação de tabelas, o Table Wizard integrado no componente 4D Write Pro Interface é ideal.

blank

Para que funcione perfeitamente com a nossa estrutura de base de dados, adicionamos arquivos de configuração que contêm as fórmulas necessárias para os documentos Performance Review. Por exemplo:

{
    "tableDataSource": "This.data.review.Skills.orderBy(\"Group asc\")",
    "columns": [{
            "verificação": verdadeiro,
            "cabeçalho": "SkillName",
            "fonte": "Este.item.Nome"
        }, {
            "check": falso,
            "cabeçalho": "CheckCodeI",
            "source": "Choose(This.item.ID_Score=1; \"X\"; \"\")"
        }, {
            "check": falso,
            "header": "CheckCodeP",
            "source": "Choose(This.item.ID_Score=2; \"X\"; \"\")"
        },{
            "check": falso,
            "cabeçalho": "CheckCodeR",
            "source": "Choose(This.item.ID_Score=3; \"X\"; \"\")"
        },{
            "check": falso,
            "cabeçalho": "CheckCodeE",
            "source": "Choose(This.item.ID_Score=4; \"X\"; \"\")"
        },{
            "check": verdadeiro,
            "cabeçalho": "ScoreName",
            "fonte": "Este.item.Pontuação.Nome"
        },{
            "verificar": verdadeiro,
            "header": "ScoreCode",
            "source": "Este.item.Score.Code"
        }
    ],
    "breaks": [{
            "label": "SkillGroup",
            "source": "Este.item.Grupo"
        }
    ],
    "breakFormulas": [{
            "label": "GroupName",
            "fonte": "Este.item.Grupo"
	}
    ],
    "extraFormulas": [{
            "label": "ScoreSkillName",
            "source": "Isto.dados.revisão.PontuaçãoHabilidade.Nome"
        },{
            "label": "ScoreSkillCode",
            "source": "Isto.dados.revisão.ScoreSkill.Código"
        },{
            "label": "CheckSkillScoreCodeI",
            "source": "Choose(This.data.review.ID_ScoreSkill=1; \"X\"; \"\")"
        }, {
            "label": "CheckSkillScoreCodeP",
            "source": "Choose(This.data.review.ID_ScoreSkill=2; \"X\"; \"\")"
        }, {
            "label": "CheckSkillScoreCodeR",
            "source": "Choose(This.data.review.ID_ScoreSkill=3; \"X\"; \"\")"
        }, {
            "label": "CheckSkillScoreCodeE",
            "source": "Choose(This.data.review.ID_ScoreSkill=4; \"X\"; \"\")"
        }
    ]
}

Com estas fórmulas, a criação de uma tabela de competências e pontuações torna-se muito simples. Depois de personalizar a tabela, aqui está o resultado:

blank

Para saber mais sobre a configuração e os recursos oferecidos pelo Assistente de tabela, consulte:

Preenchimento de dados no Cliente Web

Uma vez que o modelo for criado, os usuários entram com os dados necessários através de uma interface web intuitiva. Graças a 4D Qodly Pro, este passo se integra perfeitamente com sua base de dados, assegurando que a informação inserida corresponde aos campos definidos em seus modelos.

Para mais detalhes sobre a configuração dessas interfaces, sinta-se à vontade para conferir nossos blogs anteriores sobre:

Gerando o documento final

O documento final é gerado diretamente a partir da interface web. Quando um utilizador clica no botão dedicado, o evento “On Click” desencadeia a função “selectedReview.generatePDF()”.

blank

 

Segue-se o código que gere a geração do documento PDF:

Function generateDocument()->$doc: Object
var $context : Object
var $template : cs.TemplateEntity

// Criar contexto
$context :=This.createContext()

// Carregar modelo
$template :=This.Employee.Departement.Template.Template

// Criar documento 4D Write Pro
$doc:=WP New($template)
WP SET DATA CONTEXT ($doc; $context)
WP COMPUTE FORMULAS ($doc)

return $doc

exposed Function generatePDF ()
var $WPdoc : Object
var $blob : 4D.Blob

// Gerar documento WP
$WPdoc:=This.generateDocument()

// Converter para PDF
WP EXPORT VARIABLE ($WPdoc; $blob; wk pdf)

// Salavar na database
This .DocumentPDF:=$blob
This .save()

Permissão

Na aplicação Web, os usuários não podem acessar a tabela Template. No entanto, a função “Review.generatePDF” precisa acessar esses dados para gerar o documento PDF. Para isso, fizemos uma “promoção” na função.

  • Criando o privilégio “generatePDF”: Na página Função e privilégio, definimos um novo privilégio chamado generatePDF.

 

A dark-themed user interface section with two tabs: "Roles" and "Privileges," with "Privileges" currently selected in purple. Below, a "Privileges" section lists three privilege items:

    "guest" with an info icon.
    "createReview" with edit and delete icons.
    "generatePDF" with edit and delete icons, highlighted with a purple border.

A plus (+) button in the top right allows adding new privileges.

  • Conceder direitos de leitura: Concedemos permissão de leitura às classes de dados Departamento e Modelo. Estes direitos são essenciais para localizar o modelo Write Pro necessário para gerar o documento.
  • Promovendo a função “Review.generatePDF”: Atribuímos a opção Promover à função Review.generatePDF. Com esta promoção, quando a função for chamada no servidor, ela adquire automaticamente o privilégio generatePDF e pode acessar dados tipicamente restritos.

 

A dark-themed user interface panel titled "Include a privilege." At the top, several privilege tags such as "createReview," "none," "authentify," "user," and "hr" are displayed. Below, there is a search bar labeled "Search available permissions" and a button to create a permission. Two buttons, "Reset" (red) and "Clear" (purple), are present.

A table lists different permissions with columns for Read, Create, Update, Delete, Execute, and Promote.

    "Department" has no checkboxes selected.
    "Review.generatePDF" has Read and Promote checked.
    "Template" has only Read checked.

On the right, a toggle switch labeled "Show inherited permissions" is set to off.

Este mecanismo garante que apenas os processos autorizados possam alargar temporariamente os seus direitos para executar tarefas específicas, mantendo uma elevada segurança e controle sobre o acesso aos dados.

Pronto!

blank

Próximo passo

Combinando 4D Write Pro e 4D Qodly Pro, pode automatizar a geração de documentos dinâmicos fundindo modelos pré-definidos e dados em tempo real. Essa abordagem oferece muitos benefícios:

  • Automatização de documentos: Reduzir tarefas manuais através de modelos dinâmicos.
  • Otimização do fluxo de trabalho: Separar claramente a criação de modelos (cliente Desktop) da introdução de dados (cliente Web).
  • Poupança de tempo e maior qualidade: Uma solução prática que melhora a produtividade e a qualidade dos documentos gerados.

 

Encorajamos a experimentar essa abordagem em seus projetos e descobrir os benefícios de integrar 4D Write Pro com 4D Qodly Pro. Sinta-se livre para comentar para compartilhar seu feedback ou confira nossos outros recursos para expandir seu conhecimento.

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.