Em cenários de cadeia de suprimentos ou comércio, muitas vezes é necessário gerar rapidamente um "Contrato de Fornecimento e Compra" padronizado e preencher dinamicamente o conteúdo com base em informações de fontes de dados, como compradores, vendedores e detalhes de produtos. A seguir, usaremos um caso de uso simplificado de "Contrato" como exemplo para mostrar a você como configurar e usar o recurso "Impressão de Modelo" para mapear informações de dados para os espaços reservados nos modelos de contrato, gerando automaticamente o documento final do contrato.
Em nosso exemplo, existem aproximadamente as seguintes coleções principais (omitindo outros campos irrelevantes):

Como o sistema atual suporta apenas a impressão de registros individuais, clicaremos em "Imprimir" na página "Detalhes do Contrato", e o sistema recuperará automaticamente o registro de contracts correspondente, bem como as parties associadas e outras informações, preenchendo-as em documentos Word ou PDF.
Esta documentação foi traduzida automaticamente por IA.
Atenção, nosso plugin "Impressão de Modelo" é comercial e precisa ser adquirido e ativado antes que as operações de impressão possam ser realizadas.

Confirmar Ativação do Plugin:
Em qualquer página, crie um bloco de detalhes (por exemplo, usuários) e verifique se há uma opção de configuração de modelo correspondente na configuração de ação:


Crie as coleções de entidade principal, de contrato e de itens de produto projetadas acima (selecione apenas os campos principais).
| Categoria do Campo | Nome de Exibição do Campo | Nome do Campo | Interface do Campo |
|---|---|---|---|
| Campos PK e FK | |||
| ID | id | Inteiro | |
| ID do Comprador | buyer_id | Inteiro | |
| ID do Vendedor | seller_id | Inteiro | |
| Campos de Associação | |||
| Itens do Contrato | contract_items | Um para muitos | |
| Comprador (Parte A) | buyer | Muitos para um | |
| Vendedor (Parte B) | seller | Muitos para um | |
| Campos Gerais | |||
| Número do Contrato | contract_no | Texto de linha única | |
| Data de Início da Entrega | start_date | Data/Hora (com fuso horário) | |
| Data de Fim da Entrega | end_date | Data/Hora (com fuso horário) | |
| Taxa de Depósito (%) | deposit_ratio | Porcentagem | |
| Dias de Pagamento Após a Entrega | payment_days_after | Inteiro | |
| Nome da Conta Bancária (Beneficiário) | bank_account_name | Texto de linha única | |
| Nome do Banco | bank_name | Texto de linha única | |
| Número da Conta Bancária (Beneficiário) | bank_account_number | Texto de linha única | |
| Valor Total | total_amount | Número | |
| Códigos de Moeda | currency_codes | Seleção única | |
| Taxa de Saldo (%) | balance_ratio | Porcentagem | |
| Dias de Saldo Após a Entrega | balance_days_after | Inteiro | |
| Local de Entrega | delivery_place | Texto longo | |
| Nome do Signatário da Parte A | party_a_signatory_name | Texto de linha única | |
| Título do Signatário da Parte A | party_a_signatory_title | Texto de linha única | |
| Nome do Signatário da Parte B | party_b_signatory_name | Texto de linha única | |
| Título do Signatário da Parte B | party_b_signatory_title | Texto de linha única | |
| Campos do Sistema | |||
| Criado Em | createdAt | Criado em | |
| Criado Por | createdBy | Criado por | |
| Última Atualização Em | updatedAt | Última atualização em | |
| Última Atualização Por | updatedBy | Última atualização por |
| Categoria do Campo | Nome de Exibição do Campo | Nome do Campo | Interface do Campo |
|---|---|---|---|
| Campos PK e FK | |||
| ID | id | Inteiro | |
| Campos Gerais | |||
| Nome da Parte | party_name | Texto de linha única | |
| Endereço | address | Texto de linha única | |
| Pessoa de Contato | contact_person | Texto de linha única | |
| Telefone de Contato | contact_phone | Telefone | |
| Cargo | position | Texto de linha única | |
| Site | website | URL | |
| Campos do Sistema | |||
| Criado Em | createdAt | Criado em | |
| Criado Por | createdBy | Criado por | |
| Última Atualização Em | updatedAt | Última atualização em | |
| Última Atualização Por | updatedBy | Última atualização por |
| Categoria do Campo | Nome de Exibição do Campo | Nome do Campo | Interface do Campo |
|---|---|---|---|
| Campos PK e FK | |||
| ID | id | Inteiro | |
| ID do Contrato | contract_id | Inteiro | |
| Campos de Associação | |||
| Contrato | contract | Muitos para um | |
| Campos Gerais | |||
| Nome do Produto | product_name | Texto de linha única | |
| Especificação / Modelo | spec | Texto de linha única | |
| Quantidade | quantity | Inteiro | |
| Preço Unitário | unit_price | Número | |
| Valor Total | total_amount | Número | |
| Data de Entrega | delivery_date | Data/Hora (com fuso horário) | |
| Observação | remark | Texto longo | |
| Campos do Sistema | |||
| Criado Em | createdAt | Criado em | |
| Criado Por | createdBy | Criado por | |
| Última Atualização Em | updatedAt | Última atualização em | |
| Última Atualização Por | updatedBy | Última atualização por |
Inserir Dados de Exemplo:


Configure as regras de vinculação abaixo para calcular automaticamente o preço total e o pagamento do saldo:

Crie um bloco de visualização, confirme os dados e ative a ação "Impressão de Modelo":


Adicione uma configuração de modelo, como "Contrato de Fornecimento e Compra":


Em seguida, acesse a aba "Lista de Campos", onde você pode ver todos os campos do objeto atual. Depois de clicar em "Copiar", você pode começar a preencher o modelo.

Arquivo de Modelo de Contrato Word
Prepare o modelo de contrato (.docx) com antecedência, por exemplo: SUPPLY AND PURCHASE CONTRACT.docx
Neste exemplo, fornecemos uma versão simplificada do "Contrato de Fornecimento e Compra", que contém espaços reservados de exemplo:
{d.contract_no}: Número do contrato{d.buyer.party_name}、{d.seller.party_name}: Nomes do comprador e vendedor{d.total_amount}: Valor total do contratoEm seguida, você pode copiar os campos da sua coleção e colá-los no Word.
Preenchimento de Campos Básicos:
Por exemplo, o número do contrato no topo, ou o objeto da entidade que assina o contrato. Você clica em copiar e cola diretamente no espaço em branco correspondente no contrato.


Nos modelos, muitas vezes precisamos formatar campos, especialmente campos de data. O formato de data copiado diretamente geralmente é longo (como Qua Jan 01 2025 00:00:00 GMT) e precisa ser formatado para exibir o estilo que desejamos.
Para campos de data, você pode usar a função formatD() para especificar o formato de saída:
Exemplo:
Por exemplo, se o campo original que você copiou é {d.created_at}, e você precisa formatar a data para o formato 2025-01-01, então modifique este campo para:
Estilos comuns de formatação de data:
YYYY - Ano (quatro dígitos)MM - Mês (dois dígitos)DD - Dia (dois dígitos)HH - Hora (formato 24 horas)mm - Minutosss - SegundosExemplo 2:
Suponha que haja um campo de valor monetário, como {d.total_amount} no contrato. Você pode usar a função formatN() para formatar números, especificando casas decimais e separador de milhares.
Sintaxe:
2 significa duas casas decimais.true ou false.Exemplo 1: Formatar valor monetário com separador de milhares e duas casas decimais
Isso formatará d.amount para duas casas decimais e adicionará um separador de milhares.
Exemplo 2: Formatar valor monetário para inteiro sem casas decimais
Isso formatará d.amount para um número inteiro e adicionará um separador de milhares.
Exemplo 3: Formatar valor monetário com duas casas decimais, mas sem separador de milhares
Aqui, o separador de milhares é desativado e apenas duas casas decimais são mantidas.
Outras necessidades de formatação de valor monetário:
Para campos de string, você pode usar :upperCase para especificar o formato do texto, como conversão de maiúsculas e minúsculas.
Sintaxe:
Métodos de conversão comuns:
upperCase - Converter para todas maiúsculaslowerCase - Converter para todas minúsculasupperCase:ucFirst - Capitalizar primeira letraExemplo:
Quando precisamos imprimir uma tabela contendo vários subitens (por exemplo, detalhes do produto), geralmente precisamos usar a impressão em loop. Dessa forma, o sistema gerará uma linha de conteúdo para cada item da lista até que todos os itens sejam percorridos.
Suponha que temos uma lista de produtos (por exemplo, contract_items), que contém vários objetos de produto. Cada objeto de produto tem vários atributos, como nome do produto, especificação, quantidade, preço unitário, valor total e observações.
Passo 1: Preencher os Campos na Primeira Linha da Tabela
Primeiro, na primeira linha da tabela (não no cabeçalho), você copia e preenche diretamente as variáveis do modelo. Essas variáveis serão substituídas pelos dados correspondentes e exibidas na saída.
Por exemplo, a primeira linha da tabela é a seguinte:
| Nome do Produto | Especificação / Modelo | Quantidade | Preço Unitário | Valor Total | Observação |
|---|---|---|---|---|---|
| {d.contract_items[i].product_name} | {d.contract_items[i].spec} | {d.contract_items[i].quantity} | {d.contract_items[i].unit_price} | {d.contract_items[i].total_amount} | {d.contract_items[i].remark} |
Aqui, d.contract_items[i] representa o i-ésimo item na lista de produtos, e i é um índice que representa a ordem do produto atual.
Passo 2: Modificar o Índice na Segunda Linha
Em seguida, na segunda linha da tabela, você modificará o índice do campo para i+1 e preencherá apenas o primeiro atributo. Isso ocorre porque, durante a impressão em loop, precisamos recuperar o próximo item de dados da lista e exibi-lo na próxima linha.
Por exemplo, a segunda linha é preenchida da seguinte forma:
| Nome do Produto | Especificação / Modelo | Quantidade | Preço Unitário | Valor Total | Observação |
|---|---|---|---|---|---|
| {d.contract_items[i+1].product_name} |
Neste exemplo, mudamos [i] para [i+1], para que possamos obter os próximos dados do produto na lista.
Passo 3: Impressão Automática em Loop Durante a Renderização do Modelo
Quando o sistema processa este modelo, ele operará de acordo com a seguinte lógica:
d.contract_items, preenchendo cada linha em loop no formato da tabela até que todos os detalhes do produto sejam impressos.O i em cada linha será incrementado, garantindo que cada linha exiba informações de produto diferentes.


Neste ponto, saia do pop-up atual e clique em "Baixar modelo" para obter o modelo completo gerado.
Dicas:
.doc ou outros formatos, pode ser necessário convertê-lo para .docx, dependendo do suporte do plugin.Desejamos a você um bom uso! Com o recurso "Impressão de Modelo", você pode economizar muito trabalho repetitivo no gerenciamento de contratos, evitar erros de copiar e colar manualmente e alcançar a padronização e a saída automatizada de contratos.