Pular para o conteúdo principal

CD_HISTORICO - Histórico Contábil da Perda/Transferência

Tela de configuração: TPO044 — Cadastro de Perdas/Transferências
Localização: Cadastro de Perdas/Transferências
Tabela: PARMPERDATRANSF.CD_HISTORICO
Tabela referência: HISTORICO (CD_HISTORICO)
Tipo: DOM_INTEGER (campo edit com lookup <F9>)
Valor padrão: Resultado da busca HISTORICOESTOQUE (Resultado.getParam(0))


Descrição​

O campo CD_HISTORICO define o histórico contábil que será utilizado no movimento de estoque gerado pela perda/transferência configurada. Ele relaciona o cadastro de perdas/transferências (PARMPERDATRANSF) com um registro da tabela HISTORICO, permitindo que a operação de estoque tenha uma marcação contábil adequada.

O preenchimento deste campo é condicional: torna-se obrigatório apenas quando a operação selecionada (CD_OPERACAO) possui o campo ST_CONTABIL = 'S' (operação contábil). Caso contrário, o campo permanece opcional.


Telas impactadas​

TelaImpacto
TPO044Tela de cadastro onde o parâmetro é configurado. Define o histórico contábil para cada regra de perda/transferência.

Não foram identificadas referências diretas ao campo PARMPERDATRANSF.CD_HISTORICO em outras telas Delphi do código-fonte.


Campos envolvidos​

Campo na TelaControleDescrição
edtCD_HISTORICOTDBEdit (edit)Código do histórico contábil. Aceita digitação manual ou busca via <F9>.
edtDS_HISTORICOTDBEdit (edit, ReadOnly = True, TabStop = False)Descrição do histórico. Preenchido automaticamente após validação.

Datasource​

  • dmTPO044.dsPERDATRANSF → tabPERDATRANSF

Regras de validação do campo CD_HISTORICO​

RegraValidaçãoErro/Nome do aviso
Operação obrigatóriaNão permite informar histórico sem operação preenchidaW-0703
Existência do históricoCódigo deve existir na tabela HISTORICOW-0213
Natureza do históricoO histórico deve ter TP_NATUREZA = 'P' (Perda)W-0704
Obrigatoriedade condicionalSe a operação for contábil (ST_CONTABIL = 'S'), o histórico é obrigatório no salvamentoW-0644

Comportamento do campo​

Quando a operação é contábil (ST_CONTABIL = 'S')​

O que fazDetalhe
Campo obrigatório?Sim — o sistema impede o salvamento se o histórico estiver vazio.
VisualO rótulo lblHISTORICO é exibido em negrito (Font.Style := [fsBold]) para indicar obrigatoriedade.
Validação na digitaçãoApós informar o código, o sistema busca em HISTORICO e exige TP_NATUREZA = 'P'.
Validação no salvamentotabPERDATRANSFBeforePost verifica: se ObrigaHistorico = True e campo vazio → erro W-0644.

Simulação passo a passo​

  1. Acesse TPO044 — Cadastro de Perdas/Transferências.
  2. Clique em Novo (btnNovo).
  3. Preencha os campos obrigatórios: item origem, local origem, item destino, local destino.
  4. No campo Operação (edtCD_OPERACAO), informe uma operação que seja contábil (ST_CONTABIL = 'S').
  5. Observe que o rótulo Histórico ficará em negrito, indicando preenchimento obrigatório.
  6. No campo Histórico (edtCD_HISTORICO), pressione <F9> para abrir a lista de históricos (busca HISTORICOESTOQUE).
  7. Selecione um histórico com natureza Perda (TP_NATUREZA = 'P'), por exemplo: CD_HISTORICO = 120 — "Perda por quebra de estoque".
  8. O campo Descrição (edtDS_HISTORICO) será preenchido automaticamente.
  9. Salve o registro (btnSalvar).

Resultado esperado: O cadastro é salvo com sucesso. Ao gerar um movimento de estoque usando esta regra de perda/transferência, o sistema utilizará o histórico contábil definido.

Exceção / Importante: Se o histórico informado tiver TP_NATUREZA <> 'P' (por exemplo, entrada ou saída comum), o sistema exibe o aviso W-0704 e não permite continuar. O histórico deve ser de natureza Perda.


Quando a operação NÃO é contábil (ST_CONTABIL <> 'S')​

O que fazDetalhe
Campo obrigatório?Não — o campo pode ficar vazio.
VisualO rótulo lblHISTORICO é exibido em texto normal (sem negrito).
Validação na digitaçãoSe preenchido, ainda é validado contra a tabela HISTORICO e exige TP_NATUREZA = 'P'.
Comportamento no salvamentoObrigaHistorico = False; o sistema não exige o histórico.

Simulação passo a passo​

  1. Acesse TPO044 — Cadastro de Perdas/Transferências.
  2. Clique em Novo (btnNovo).
  3. Preencha os campos obrigatórios: item origem, local origem, item destino, local destino.
  4. No campo Operação (edtCD_OPERACAO), informe uma operação não contábil (ST_CONTABIL <> 'S').
  5. Observe que o rótulo Histórico permanece em texto normal (sem negrito).
  6. Deixe o campo Histórico vazio ou, se desejar, pressione <F9> e selecione um histórico válido.
  7. Salve o registro (btnSalvar).

Resultado esperado: O cadastro é salvo mesmo com o campo histórico vazio, pois a operação não exige movimentação contábil.

Exceção / Importante: Se o usuário digitar manualmente um código de histórico inexistente, o sistema exibe W-0213 e não permite prosseguir, independentemente da operação ser contábil ou não.


Regra de obrigatoriedade dinâmica​

A obrigatoriedade do campo CD_HISTORICO é determinada em tempo real conforme a operação informada:

Se CD_OPERACAO.ST_CONTABIL = 'S'
→ ObrigaHistorico := True
→ lblHISTORICO.Font.Style := [fsBold]
→ Campo obrigatório no BeforePost
Senão
→ ObrigaHistorico := False
→ lblHISTORICO.Font.Style := []
→ Campo opcional

Essa verificação ocorre em dois momentos:

  1. Na validação do campo operação (tabPERDATRANSFCD_OPERACAOValidate) — ao informar a operação.
  2. No evento AfterScroll (tabPERDATRANSFAfterScroll) — ao navegar entre registros existentes.

Tabela Comparativa Resumida​

SituaçãoST_CONTABIL da operaçãoHistórico obrigatório?Natureza exigidaIndicação visual
Operação contábilSSimTP_NATUREZA = 'P'Rótulo em negrito
Operação não contábil<> SNãoTP_NATUREZA = 'P' (se preenchido)Rótulo normal

Procedures impactadas​

Rotinas Delphi (referência ao campo CD_HISTORICO da PARMPERDATRANSF)​

RotinaArquivoFunção
TfrmTPO044.edtCD_HISTORICOKeyDownsource/TPO044/UTPO044.pasAbre busca HISTORICOESTOQUE ao pressionar <F9>.
TdmTPO044.tabPERDATRANSFCD_HISTORICOValidatesource/TPO044/UdmTPO044.pasValida existência e natureza (TP_NATUREZA = 'P') do histórico.
TdmTPO044.tabPERDATRANSFCD_OPERACAOValidatesource/TPO044/UdmTPO044.pasDetermina ObrigaHistorico com base em ST_CONTABIL da operação.
TdmTPO044.tabPERDATRANSFAfterScrollsource/TPO044/UdmTPO044.pasReaplica a regra de obrigatoriedade ao navegar entre registros.
TdmTPO044.tabPERDATRANSFBeforePostsource/TPO044/UdmTPO044.pasImpede salvamento se histórico for obrigatório e estiver vazio (W-0644).

Scripts SQL (referência direta ao campo PARMPERDATRANSF.CD_HISTORICO)​

Não foram encontradas referências diretas ao campo PARMPERDATRANSF.CD_HISTORICO em scripts SQL (Scripts/). As referências coletadas em CD_HISTORICO no banco de dados referem-se ao campo genérico da tabela HISTORICO utilizado por diversas outras tabelas do sistema (ex: CONTASHISTORICO, BOLETO, OPERACAO, etc.), não especificamente ao parâmetro da PARMPERDATRANSF.