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
No Cegid PHC Desktop, aceder ao ecrã Regras do utilizador ( Menu Supervisor » Framework » Regras do utilizador)
Introduzir um novo registo
No campo Tabela preencher com ST
No campo Descrição, insira um nome descritivo para a regra (ex.: "Normalização de Designações")
Ative a opção A expressão é um programa
No campo Expressão em XABSE adicionar a expressão abaixo e Gravar
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