--- title: "Exemplo de PromptFunctions para Desktop - Otimização de Designação de Artigos" slug: "1783351390" tags: ["Cegid Pulse"] updated: 2026-09-30T17:46:27Z published: 2026-09-30T17:46:27Z canonical: "help.ila.cegid.com/1783351390" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.ila.cegid.com/llms.txt > Use this file to discover all available pages before exploring further. # Exemplo de PromptFunctions para Desktop - Otimização de Designação de Artigos - [x] PT - [ ] AO - [ ] MZ - [ ] CV - [ ] CS - [ ] Evolution - [ ] Web - [x] Desktop --- Esta **PromptFunction** é executada automaticamente ao criar ou alterar um artigo, analisando a designação inserida pelo utilizador e sugerindo uma versão mais clara, completa e correta. A funcionalidade aplica correção ortográfica, normalização de termos e enriquecimento semântico para transformar descrições simplificadas ou incompletas em descrições padronizadas e profissionais. **Exemplo** - Entrada: *“lamp 30 w coz”* - Sugestão: *“Lâmpada para cozinha 30W”* Vantagens - As designações de artigos são **claras, consistentes e padronizadas** em todo o sistema - Existe uma **redução significativa de erros ortográficos e abreviações ambíguas** - Os utilizadores ganham **eficiência**, com menos necessidade de correção manual - O catálogo de produtos fica **mais estruturado e preparado para integração** com outros sistemas (ERP, e-commerce, relatórios) ### **Configurar** 1. No Cegid PHC Desktop, aceder ao ecrã **Regras do utilizador** ( Menu Supervisor » Framework » Regras do utilizador) 2. Introduzir um novo registo 3. No campo Tabela preencher com **ST** 4. No campo **Descrição**, insira um nome descritivo para a regra (ex.: "Normalização de Designações") 5. Ative a opção **A expressão é um programa** 6. No campo Expressão em XABSE adicionar a expressão abaixo e **Gravar** 7. local lcDescricao, lcResposta, lcPergunta, lcContexto, lbRet lbRet = .t. * --- descrição actual do artigo em edição --- lcDescricao = alltrim(st.design) if empty(lcDescricao) return lbRet endif * mensagem informativa actform("A normalizar designação...") * --- pergunta --- text to lcPergunta textmerge noshow Normaliza esta descrição de artigo de ERP: "<>". Responde APENAS com a descrição normalizada, sem explicações, sem comentários. endtext * --- contexto --- text to lcContexto textmerge noshow És um assistente especializado na normalização de designações de artigos em ERP. O principal objetivo é transformar a descrição do artigo numa designação clara, completa e escrita por extenso, para que qualquer utilizador consiga identificar facilmente o artigo. Deves aplicar as seguintes regras: 1. Escrever a designação por extenso sempre que possível 2. Substituir abreviaturas por termos completos 3. Corrigir capitalização para formato profissional 4. Uniformizar a escrita entre artigos semelhantes 5. Remover símbolos desnecessários 6. Corrigir espaços em excesso 7. Manter medidas e unidades técnicas corretamente formatadas 8. Preservar toda a informação técnica relevante 9. Organizar a descrição de forma natural e legível 10. Idioma: português de Portugal (nunca português do Brasil) Regras importantes: 1. Não inventar informação 2. Não remover características importantes 3. Não acrescentar explicações 4. Não colocar aspas 5. Devolver apenas a designação final normalizada Quanto mais clara e descritiva for a designação, melhor será o resultado final. Devolve apenas o texto normalizado. endtext * --- chamada à AI --- lcResposta = PromptFunction(lcPergunta, lcContexto) deactform() * --- validar resposta --- lcResposta = alltrim(lcResposta) if empty(lcResposta) or lcResposta == lcDescricao return lbRet endif * --- aplicar descrição normalizada --- select st replace st.design with lcResposta sst.refrescar() * --- apresentar sugestão ao utilizador --- *if _confirmarNormalizacaoAI(lcDescricao, lcResposta) * --- aplicar descrição normalizada --- *select st *replace st.design with lcResposta *sst.refrescar() *endif return lbRet *============================================================= * FUNCTION: _confirmarNormalizacaoAI * Retorna .T. se o utilizador confirmar, .F. se cancelar *============================================================= function _confirmarNormalizacaoAI(tcAntes, tcDepois) public _gNormalizacaoConfirmada _gNormalizacaoConfirmada = .f. local loForm loForm = createobject("_clsConfirmarNormalizacao") loForm._setupLayout(tcAntes, tcDepois) loForm.show() local lbResultado lbResultado = _gNormalizacaoConfirmada release _gNormalizacaoConfirmada loForm = null release loForm return lbResultado endfunc *============================================================= * CLASS: _clsConfirmarNormalizacao *============================================================= define class _clsConfirmarNormalizacao as form autocenter = .t. borderstyle = 2 caption = "Cegid Pulse — Normalização" width = 580 height = 320 maxbutton = .f. minbutton = .f. closable = .t. windowtype = 1 backcolor = rgb(245, 246, 250) * --- Barra de cabeçalho azul escuro --- add object shpHeader as shape with ; left = 0, top = 0, width = 580, height = 50, ; backcolor = rgb(26, 58, 92), borderstyle = 0 add object lblHeader as label with ; left = 22, top = 14, width = 536, height = 22, ; caption = "Cegid Pulse — Normalização de Designações de Artigos", ; fontname = "Arial", fontsize = 13, fontbold = .t., ; forecolor = rgb(255, 255, 255), backstyle = 0 * --- Subtítulo --- add object lblSubtitulo as label with ; left = 22, top = 62, width = 536, height = 18, ; caption = "Cegid Pulse sugeriu a seguinte normalização para a designação do artigo:", ; fontname = "Arial", fontsize = 9, ; forecolor = rgb(90, 90, 90), backstyle = 0 * --- Caixa "Antes" --- add object shpAntes as shape with ; left = 22, top = 88, width = 536, height = 52, ; backcolor = rgb(255, 245, 245), ; bordercolor = rgb(220, 180, 180), ; borderstyle = 1, curvature = 3 add object lblAntesLabel as label with ; left = 34, top = 93, width = 80, height = 16, ; caption = "Antes:", ; fontname = "Arial", fontsize = 8, fontbold = .t., ; forecolor = rgb(180, 60, 60), backstyle = 0 add object lblAntesValor as label with ; left = 34, top = 111, width = 510, height = 20, ; caption = "", ; fontname = "Arial", fontsize = 10, ; forecolor = rgb(80, 30, 30), backstyle = 0 * --- Caixa "Depois" --- add object shpDepois as shape with ; left = 22, top = 166, width = 536, height = 52, ; backcolor = rgb(240, 250, 240), ; bordercolor = rgb(160, 210, 160), ; borderstyle = 1, curvature = 3 add object lblDepoisLabel as label with ; left = 34, top = 171, width = 80, height = 16, ; caption = "Depois:", ; fontname = "Arial", fontsize = 8, fontbold = .t., ; forecolor = rgb(40, 140, 60), backstyle = 0 add object lblDepoisValor as label with ; left = 34, top = 189, width = 510, height = 20, ; caption = "", ; fontname = "Arial", fontsize = 10, fontbold = .t., ; forecolor = rgb(20, 90, 30), backstyle = 0 * --- Separador inferior --- add object shpSepBottom as shape with ; left = 0, top = 232, width = 580, height = 1, ; backcolor = rgb(215, 220, 225), borderstyle = 0 * --- Botões --- add object btnAplicar as commandbutton with ; left = 330, top = 232, width = 120, height = 34, ; caption = "Aplicar", ; fontname = "Arial", fontsize = 10, fontbold = .t., ; default = .t., ; backcolor = rgb(39, 174, 96), ; forecolor = rgb(255, 255, 255), ; tabindex = 1 add object btnIgnorar as commandbutton with ; left = 458, top = 232, width = 100, height = 34, ; caption = "Ignorar", ; fontname = "Arial", fontsize = 10, ; cancel = .t., ; backcolor = rgb(220, 220, 220), ; forecolor = rgb(80, 80, 80), ; tabindex = 2 *----------------------------------------------------------- procedure _setupLayout(tcAntes, tcDepois) thisform.icon = "..bmpssubscription.ico" thisform.lblAntesValor.caption = left(alltrim(tcAntes), 120) thisform.lblDepoisValor.caption = left(alltrim(tcDepois), 120) thisform.shpHeader.width = thisform.width thisform.shpSepBottom.width = thisform.width thisform.btnAplicar.Top = thisform.btnAplicar.Top + 20 thisform.btnIgnorar.Top = thisform.btnIgnorar.Top + 20 thisform.btnAplicar.setfocus() endproc procedure btnAplicar.click _gNormalizacaoConfirmada = .t. thisform.release() endproc procedure btnIgnorar.click _gNormalizacaoConfirmada = .f. thisform.release() endproc procedure queryunload _gNormalizacaoConfirmada = .f. endproc enddefine - Após gravar o registo, através do menu Gestão, aceda ao ecrã de **Gestão de Stocks** - Introduza um novo registo ou altere um registo existente - Preencha o campo **Designação** com a descrição abreviada do artigo - Clique em **Gravar** e verifique que a designação foi automaticamente normalizada