Exemplo de PromptFunctions para Desktop - Otimização de Designação de Artigos

Prev Next
  • PT

  • AO

  • MZ

  • CV

  • CS

  • Evolution

  • Web

  • 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