Pular para o conteúdo principal

TFA006 — Tabelas de Preço (enriquecimento)

Menu: Cadastros > Tabelas de Faturamento > Tabelas de Preço

Objetivo​

A tela TFA006 (Tabelas de Preço) cadastra Tabelas de Preço e os produtos/preços vinculados a cada uma, incluindo preços promocionais por período e condição de pagamento. Também permite atualizar em massa o preço de vários produtos por percentual ou valor (inclusive promoções e duplicação de tabela), reprocessar preços via procedure de estoque/compra, consultar o histórico de alterações de preço e emitir relatórios/demonstrativos de preço.

Fluxo principal​

  1. Na aba 'Tabelas de Preço', clicar Novo, informar Código e Descrição da tabela (e opcionalmente Data de Validade, Sincronização, Tabela Master de Caixa) e Salvar. (pagTABPRECO) — source/TFA006/UdmTFA006.pas:435-454 (TdmTFA006.tabTABPRECOAfterInsert)
  2. Na aba 'Itens', vincular produtos à tabela informando Código do Produto e Preço; opcionalmente informar preço mínimo/máximo (gera percentuais de desconto/acréscimo máximo). (pagITEMTABPRECO) — source/TFA006/UdmTFA006.pas:401-466 (TdmTFA006.tabITEMTABPRECOCD_ITEMValidate)
  3. Opcionalmente, para um item já vinculado, cadastrar períodos de preço/promoção (datas, condição de pagamento, percentual de desconto ou promoção). (grid ITEMTABPRECODATA (aba Itens)) — source/TFA006/UdmTFA006.pas:614-647 (TdmTFA006.tabITEMTABPRECODATABeforePost)
  4. Na aba 'Atualização de Preço', escolher o tipo de operação (Atualização de Preço, Promocional, Duplicação de Tabela ou Alteração de Validade), informar tabela(s) de origem, filtros (grupo/subgrupo/marca/perfil/desenho/medida) e percentual ou valor, e clicar em Atualizar. (pagTABELA) — source/TFA006/UTFA006.pas:1544-1650 (TfrmTFA006.btnPROCESSARClick)
  5. Confirmar o processamento em massa (aplica UPDATE/INSERT direto nas tabelas de preço/promoção) e depois pressionar F6/Salvar para confirmar definitivamente. (pagTABELA) — source/TFA006/UTFA006.pas:2243-2246 (TfrmTFA006.btnPROCESSARClick)
  6. Salvar a tela: o sistema grava tabela, itens e períodos pendentes e atualiza a data de registro (DT_REGISTRO) dos itens alterados. (toolbar (btnSalvar)) — source/TFA006/UTFA006.pas:807-858 (TfrmTFA006.btnSalvarClick)

Campos obrigatórios​

CampoCondiçãoMensagemFonte
Código da Tabela de Preço (CD_TABPRECO)ao incluir uma Tabela de Preço na aba Tabelas de PreçoÉ Obrigatório Informar o Código da Tabela de Preços!source/TFA006/UdmTFA006.pas:443-454 (TdmTFA006.tabTABPRECOBeforePost)
Descrição da Tabela de Preço (DS_TABPRECO)ao incluir/alterar a Tabela de PreçoÉ Obrigatório Informar a Descrição da Tabela de Preços!source/TFA006/UdmTFA006.pas:443-454 (TdmTFA006.tabTABPRECOBeforePost)
Código e Preço do Produto (CD_ITEM / VL_PRECO)ao vincular um produto a uma Tabela de Preço (aba Itens)É Obrigatório informar o Código do Produto! / É Obrigatório Informar o Preço do Produto!source/TFA006/UdmTFA006.pas:456-466 (TdmTFA006.tabITEMTABPRECOBeforePost)
Data Inicial, Data Final e Preço do Período (promoção do item)ao cadastrar um período de preço/promoção do itemÉ Obrigatório Informar a Data Inicial! / Data Final! / Preço do Período!source/TFA006/UdmTFA006.pas:614-629 (TdmTFA006.tabITEMTABPRECODATABeforePost)
Tabela (Tabela de Origem), Percentual/Valor, Datas de Promoção (aba Atualização de Preço)conforme o tipo de operação selecionado em cmbST_TABELA (A, P, D, V)É Obrigatório Informar o Campo Tabela.../ Percentual ou o Valor!/ Data de Inicio da Promoção!/ etc.source/TFA006/UTFA006.pas:1576-1650 (TfrmTFA006.btnPROCESSARClick)

Mensagens: causa e ação​

A Data Final não pode ser Menor que a Data Inicial!​

Causa: Usuário informou, no período de preço/promoção do item, uma Data Final anterior à Data Inicial.

Ação: Corrigir as datas do período na grade de preços do item.

Fonte: source/TFA006/UdmTFA006.pas:628-629 (TdmTFA006.tabITEMTABPRECODATABeforePost)

A Data Inicial não pode ser Maior que a Data Final!​

Causa: Na aba Atualização de Preço, a Data de Início da Promoção informada é posterior à Data de Fim.

Ação: Ajustar as datas de início/fim da promoção.

Fonte: source/TFA006/UdmTFA006.pas:1296-1314 (TdmTFA006.tabTABELADT_INICIOPROMOCAOValidate)

A Tabela de Preço já está Cadastrada!​

Causa: O código de Tabela de Preço digitado já existe no cadastro.

Ação: Usar outro código ou localizar/editar a tabela existente.

Fonte: source/TFA006/UdmTFA006.pas:576-588 (TdmTFA006.tabTABPRECOCD_TABPRECOValidate)

A Tabela de Preço %s é uma Tabela de Caixa Master. Verifique!​

Causa: A tabela informada como Master já é master de outra tabela de caixa (encadeamento não permitido).

Ação: Escolher outra tabela para ser a Master de Caixa.

Fonte: source/TFA006/UdmTFA006.pas:1212-1220 (TdmTFA006.tabTABPRECOCD_TABMASTERValidate)

A tabela de preço deve ser informada!​

Causa: Na aba Atualização de Preço, tipo 'A', o usuário tentou informar um produto/pressionar F9 sem antes cadastrar ao menos uma tabela na grade de tabelas de origem.

Ação: Preencher a grade de Tabelas antes de informar produto ou filtros.

Fonte: source/TFA006/UdmTFA006.pas:489-499 (TdmTFA006.tabTABELACD_ITEMValidate)

A tabela de preço do item "%s" está sendo alterada em outra instância no momento. Atualização de preço Cancelada!​

Causa: Conflito de concorrência: outro processo alterou o mesmo ITEMTABPRECO no mesmo instante (SAVEPOINT falhou).

Ação: Aguardar e repetir a operação de salvar/reprocessar.

Fonte: source/TFA006/UTFA006.pas:832-852 (TfrmTFA006.btnSalvarClick)

A Tabela de Preço já está Cadastrada!​

Causa: Ver acima.

Ação: Ver acima.

Fonte: source/TFA006/UdmTFA006.pas:576-588 (TdmTFA006.tabTABPRECOCD_TABPRECOValidate)

Deseja duplicar este item para as outras tabelas?​

Causa: Item foi incluído pela primeira vez em uma tabela de preço e o parâmetro PARMFATUR.STATUALIZAITEMTABPRECO está ligado.

Ação: Responder Sim para replicar o mesmo preço nas demais tabelas que ainda não têm o item, ou Não para manter só na tabela atual.

Fonte: source/TFA006/UdmTFA006.pas:1068-1089 (TdmTFA006.tabITEMTABPRECOAfterPost)

O Produto já está Cadastrado para esta Tabela de Preço!​

Causa: O produto informado já possui registro em ITEMTABPRECO para a mesma tabela de preço.

Ação: Localizar e editar o registro existente em vez de incluir um novo.

Fonte: source/TFA006/UdmTFA006.pas:415-420 (TdmTFA006.tabITEMTABPRECOCD_ITEMValidate)

O Produto não está Ativo [TPO001]!​

Causa: O produto informado está inativo no cadastro de Produtos (TPO001).

Ação: Reativar o produto em TPO001 ou usar outro produto ativo.

Fonte: source/TFA006/UdmTFA006.pas:501-514 (TdmTFA006.tabTABELACD_ITEMValidate)

Não é permitido informar valor de preço negativo. Verifique !​

Causa: Usuário digitou um preço (VL_PRECO) negativo para o item na tabela.

Ação: Informar um valor de preço maior ou igual a zero.

Fonte: source/TFA006/UdmTFA006.pas:1241-1242 (TdmTFA006.tabITEMTABPRECOVL_PRECOValidate)

O preço Minimo não pode ser Maior que o preço atual do Item. Verifique!​

Causa: O Preço Mínimo informado é maior que o Preço de venda atual do item.

Ação: Reduzir o preço mínimo ou revisar o preço do item.

Fonte: source/TFA006/UdmTFA006.pas:894-903 (TdmTFA006.tabITEMTABPRECOVL_PRECOMINIMOValidate)

O preço Maximo não pode ser Menor que o preço atual do Item. Verifique!​

Causa: O Preço Máximo informado é menor que o Preço de venda atual do item.

Ação: Aumentar o preço máximo ou revisar o preço do item.

Fonte: source/TFA006/UdmTFA006.pas:911-920 (TdmTFA006.tabITEMTABPRECOVL_PRECOMAXIMOValidate)

O Desconto não pode ser maior que o preço do item!​

Causa: O valor de desconto/preço promocional do período informado supera o preço base do item, sem que o recálculo automático (ST_ALTERAVLTFA006) esteja em curso.

Ação: Informar um valor de desconto/percentual dentro do limite do preço do item.

Fonte: source/TFA006/UdmTFA006.pas:1106-1113 (TdmTFA006.tabITEMTABPRECODATAVL_PRECOValidate)

A Promoção não pode ser mais que 100%!​

Causa: O percentual de promoção do item (PC_PROMOCAO) informado é maior que 100%.

Ação: Informar um percentual de promoção entre 0 e 100.

Fonte: source/TFA006/UdmTFA006.pas:1711-1715 (TdmTFA006.tabITEMTABPRECODATAPC_PROMOCAOValidate)

Já Existem Promoções cadastradas neste Período. Verifique!​

Causa: Já existe outro período de preço/promoção para o mesmo item, tabela e condição de pagamento cujas datas se sobrepõem às informadas.

Ação: Ajustar as datas do novo período ou editar/excluir o período conflitante.

Fonte: source/TFA006/UdmTFA006.pas:1316-1402 (TdmTFA006.Valida_DiponibilidadePromo)

Já Existem Promoções cadastradas neste Período para o Item %sCD_ITEM%s. Verifique!​

Causa: Mesmo cenário do item acima, mas disparado durante a Atualização de Preço Promocional em massa (aba Atualização de Preço).

Ação: Ajustar o período de promoção informado no processamento em massa.

Fonte: source/TFA006/UTFA006.pas:1924-1962 (TfrmTFA006.btnPROCESSARClick)

Somente Usuário do Tipo Autorizador pode excluir esse Registro.​

Causa: Usuário logado não está cadastrado como Autorizador ativo e tentou excluir um registro do Histórico de Preços.

Ação: Solicitar a um usuário Autorizador que realize a exclusão, ou cadastrar o usuário como autorizador.

Fonte: source/TFA006/UTFA006.pas:742-750 (TfrmTFA006.btnExcluirClick)

É Permitido Informar no Máximo Três Condições de Pagamento!​

Causa: Usuário tentou incluir uma quarta Condição de Pagamento vinculada à tabela de preço.

Ação: Remover uma condição de pagamento existente antes de incluir outra (limite de 3).

Fonte: source/TFA006/UdmTFA006.pas:1287-1294 (TdmTFA006.tabCONDPAGTONewRecord)

Atualização deixará o valor do Item %sCD_ITEM%s negativo. Valor Informado.: ... Valor Tabela Preço.: ... Verifique!​

Causa: Na Atualização de Preço por valor fixo negativo (desconto em R$), o valor a subtrair é maior que o preço atual de algum item filtrado, o que geraria preço negativo.

Ação: Reduzir o valor de desconto informado ou restringir o filtro para não atingir itens com preço menor que o desconto.

Fonte: source/TFA006/UdmTFA006.pas:1500-1509 (TdmTFA006.ValidaPrecoNovo)

Não Existem dados para Impressão. Verifique!​

Causa: O relatório de Demonstrativo de Preço não encontrou nenhum registro com os filtros informados.

Ação: Revisar os filtros de tabela/grupo/marca/período usados no relatório.

Fonte: source/TFA006/UTFA006.pas:3356-3358 (TfrmTFA006.btnImpressaoClick)

Informe ao menos uma tabela de Preço!​

Causa: No relatório tipo Impressão de Preços (Lista, opção 'I'), nenhuma Tabela de Preço foi selecionada na grade de tabelas.

Ação: Selecionar ao menos uma Tabela de Preço antes de imprimir.

Fonte: source/TFA006/UTFA006.pas:3485-3488 (TfrmTFA006.btnImpressaoClick)

Informe a Condição de Pagamento!​

Causa: No relatório tipo 'I', a Condição de Pagamento não foi informada.

Ação: Selecionar uma Condição de Pagamento antes de imprimir.

Fonte: source/TFA006/UTFA006.pas:3491-3494 (TfrmTFA006.btnImpressaoClick)

É Obrigatório Informar o Cliente!​

Causa: No relatório tipo Lista de Preço para Cliente (opção 'L'), o Cliente não foi informado.

Ação: Informar o cliente (Pessoa) antes de imprimir a lista.

Fonte: source/TFA006/UTFA006.pas:3521-3524 (TfrmTFA006.btnImpressaoClick)

Regras de negócio​

  • TFA006.R001 (ver regras/TFA006/TFA006.R001.md)
  • TFA006.R002 (ver regras/TFA006/TFA006.R002.md)
  • TFA006.R003 (ver regras/TFA006/TFA006.R003.md)
  • TFA006.R004 (ver regras/TFA006/TFA006.R004.md)
  • TFA006.R005 (ver regras/TFA006/TFA006.R005.md)
  • TFA006.R006 (ver regras/TFA006/TFA006.R006.md)
  • TFA006.R007 (ver regras/TFA006/TFA006.R007.md)
  • TFA006.R008 (ver regras/TFA006/TFA006.R008.md)
  • TFA006.R009 (ver regras/TFA006/TFA006.R009.md)
  • TFA006.R010 (ver regras/TFA006/TFA006.R010.md)
  • TFA006.R011 (ver regras/TFA006/TFA006.R011.md)
  • TFA006.R012 (ver regras/TFA006/TFA006.R012.md)
  • TFA006.R013 (ver regras/TFA006/TFA006.R013.md)
  • TFA006.R014 (ver regras/TFA006/TFA006.R014.md)
  • TFA006.R015 (ver regras/TFA006/TFA006.R015.md)
  • TFA006.R016 (ver regras/TFA006/TFA006.R016.md)
  • TFA006.R017 (ver regras/TFA006/TFA006.R017.md)
  • TFA006.R018 (ver regras/TFA006/TFA006.R018.md)
  • TFA006.R019 (ver regras/TFA006/TFA006.R019.md)
  • TFA006.R020 (ver regras/TFA006/TFA006.R020.md)
  • TFA006.R021 (ver regras/TFA006/TFA006.R021.md)

Perguntas frequentes​

P: Por que aparece 'A Tabela de Preço já está Cadastrada!' ao tentar incluir uma tabela? R: O código informado em CD_TABPRECO já existe. Informe um código diferente para a nova Tabela de Preço. Fonte: source/TFA006/UdmTFA006.pas:576-588 (TdmTFA006.tabTABPRECOCD_TABPRECOValidate)

P: Por que não consigo excluir um registro de Histórico de Preços? R: Só usuários cadastrados como Autorizador ativo (tabela AUTORIZADOR) podem excluir registros do Histórico. Peça a um autorizador para excluir ou cadastre o usuário como autorizador. Fonte: source/TFA006/UTFA006.pas:742-757 (TfrmTFA006.btnExcluirClick)

P: Deu a mensagem 'O Produto já está Cadastrado para esta Tabela de Preço!' R: O produto informado já tem um registro em ITEMTABPRECO para essa mesma tabela; use a busca (F9) ou altere o registro existente em vez de incluir novamente. Fonte: source/TFA006/UdmTFA006.pas:401-433 (TdmTFA006.tabITEMTABPRECOCD_ITEMValidate)

P: Por que o sistema pergunta 'Deseja duplicar este item para as outras tabelas?' ao salvar um item novo? R: O parâmetro PARMFATUR.STATUALIZAITEMTABPRECO está ligado ('S'); ao incluir um item pela primeira vez o sistema oferece replicar o mesmo preço para as demais Tabelas de Preço que ainda não têm esse item. Responda Não se não quiser replicar. Fonte: source/TFA006/UdmTFA006.pas:1064-1090 (TdmTFA006.tabITEMTABPRECOAfterPost)

P: Deu 'A tabela de preço do item ... está sendo alterada em outra instância no momento. Atualização de preço Cancelada!' R: Outro usuário/processo está alterando o mesmo item de tabela de preço no mesmo instante (conflito de SAVEPOINT); aguarde e tente salvar/reprocessar novamente. Fonte: source/TFA006/UTFA006.pas:832-852 (TfrmTFA006.btnSalvarClick)

P: Por que não consigo digitar/selecionar um produto na aba Atualização de Preço quando o tipo é 'Atualização de Preço' (A)? R: É preciso primeiro informar ao menos uma Tabela de Preço de origem na grade 'Tabelas'; sem isso o sistema bloqueia com 'A tabela de preço deve ser informada!'. Fonte: source/TFA006/UdmTFA006.pas:479-500 (TdmTFA006.tabTABELACD_ITEMValidate)

P: Deu 'Já Existem Promoções cadastradas neste Período. Verifique!' ao salvar uma promoção do item. R: Já existe outro período de preço/promoção cadastrado para o mesmo item, tabela e condição de pagamento que sobrepõe as datas informadas; ajuste as datas ou exclua/edite a promoção existente. Fonte: source/TFA006/UdmTFA006.pas:1316-1402 (TdmTFA006.Valida_DiponibilidadePromo)

P: Por que o botão 'Excluir Produtos' apaga todos os itens da tabela mesmo eu tendo aplicado um filtro? R: O botão 'Excluir Produtos' remove TODOS os itens (ITEMTABPRECO) da Tabela de Preço selecionada, ignorando qualquer filtro da tela; a ação é irreversível e exige confirmação explícita. Está disponível só para o usuário autorizador na TFA008. Fonte: source/TFA006/UTFA006.pas:4034-4056 (TfrmTFA006.btnExcluiProdutosClick)

P: Deu 'A Tabela de Preço %s é uma Tabela de Caixa Master. Verifique!' ao configurar tabela mestre de caixa. R: A tabela de preço que está sendo editada já é usada como CD_TABMASTER (mestre) de outra tabela de caixa; não é permitido encadear uma tabela master como escrava de outra. Escolha outra tabela. Fonte: source/TFA006/UdmTFA006.pas:1202-1235 (TdmTFA006.tabTABPRECOCD_TABMASTERValidate)

P: Deu 'A Data Final não pode ser Menor que a Data Inicial!' na promoção do item. R: A data final do período de preço/promoção informada é anterior à data inicial; corrija as datas do período. Fonte: source/TFA006/UdmTFA006.pas:628-629 (TdmTFA006.tabITEMTABPRECODATABeforePost)

P: Por que ao alterar o preço base do item (VL_PRECO) os preços promocionais futuros também mudam sozinhos? R: Isso é intencional quando o parâmetro PARMFATUR.ST_ALTERAVLTFA006 está ligado ('S'): o sistema recalcula automaticamente os preços dos períodos de promoção ainda vigentes (DT_FINAL >= hoje) mantendo o percentual de desconto já cadastrado. Fonte: source/TFA006/UdmTFA006.pas:1237-1269 (TdmTFA006.tabITEMTABPRECOVL_PRECOValidate)

Dúvidas em aberto (o código não responde)​

  • O parâmetro ST_JUROVENDA só afeta a visibilidade do combo/label de cálculo de juros (ST_CALCULAJUROS) quando igual a 'T'? Não há outro efeito de negócio localizado no módulo. — UTFA006.pas:445-446 apenas alterna Visible; não achei uso do valor calculado.
  • Qual é o efeito real de PARMFATUR.CD_TABCOMPRA na consulta de itens (join ITEMTABCOMPRA)? O parâmetro é passado como CD_TABCOMPRA ao abrir tabITEMTABPRECO, mas o SQL completo da query está no .dfm e não foi lido por completo. — UdmTFA006.pas:381-382 e UdmTFA006.dfm:227-236.
  • O que a procedure RETORNA_PERFIL_TFA006 faz exatamente? É citada no briefing como chamada pelo módulo mas não encontrei a chamada direta nos dois .pas lidos. — Pode estar embutida no SQL de algum TFDQuery no .dfm (não lido por completo).
  • Como o combo cmbST_TABELA = 'V' (Alteração de Validade) trata data de validade vazia? Não vi validação de campo obrigatório para tabTABELADT_VALIDADE antes do UPDATE em btnPROCESSARClick. — UTFA006.pas:2230-2238.