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 buscaHISTORICOESTOQUE(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
| Tela | Impacto |
|---|---|
| TPO044 | Tela 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_HISTORICOem outras telas Delphi do código-fonte.
Campos envolvidos
| Campo na Tela | Controle | Descrição |
|---|---|---|
edtCD_HISTORICO | TDBEdit (edit) | Código do histórico contábil. Aceita digitação manual ou busca via <F9>. |
edtDS_HISTORICO | TDBEdit (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
| Regra | Validação | Erro/Nome do aviso |
|---|---|---|
| Operação obrigatória | Não permite informar histórico sem operação preenchida | W-0703 |
| Existência do histórico | Código deve existir na tabela HISTORICO | W-0213 |
| Natureza do histórico | O histórico deve ter TP_NATUREZA = 'P' (Perda) | W-0704 |
| Obrigatoriedade condicional | Se a operação for contábil (ST_CONTABIL = 'S'), o histórico é obrigatório no salvamento | W-0644 |
Comportamento do campo
Quando a operação é contábil (ST_CONTABIL = 'S')
| O que faz | Detalhe |
|---|---|
| Campo obrigatório? | Sim — o sistema impede o salvamento se o histórico estiver vazio. |
| Visual | O rótulo lblHISTORICO é exibido em negrito (Font.Style := [fsBold]) para indicar obrigatoriedade. |
| Validação na digitação | Após informar o código, o sistema busca em HISTORICO e exige TP_NATUREZA = 'P'. |
| Validação no salvamento | tabPERDATRANSFBeforePost verifica: se ObrigaHistorico = True e campo vazio → erro W-0644. |
Simulação passo a passo
- Acesse TPO044 — Cadastro de Perdas/Transferências.
- Clique em Novo (
btnNovo). - Preencha os campos obrigatórios: item origem, local origem, item destino, local destino.
- No campo Operação (
edtCD_OPERACAO), informe uma operação que seja contábil (ST_CONTABIL = 'S'). - Observe que o rótulo Histórico ficará em negrito, indicando preenchimento obrigatório.
- No campo Histórico (
edtCD_HISTORICO), pressione<F9>para abrir a lista de históricos (buscaHISTORICOESTOQUE). - Selecione um histórico com natureza Perda (
TP_NATUREZA = 'P'), por exemplo:CD_HISTORICO = 120— "Perda por quebra de estoque". - O campo Descrição (
edtDS_HISTORICO) será preenchido automaticamente. - 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 avisoW-0704e 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 faz | Detalhe |
|---|---|
| Campo obrigatório? | Não — o campo pode ficar vazio. |
| Visual | O rótulo lblHISTORICO é exibido em texto normal (sem negrito). |
| Validação na digitação | Se preenchido, ainda é validado contra a tabela HISTORICO e exige TP_NATUREZA = 'P'. |
| Comportamento no salvamento | ObrigaHistorico = False; o sistema não exige o histórico. |
Simulação passo a passo
- Acesse TPO044 — Cadastro de Perdas/Transferências.
- Clique em Novo (
btnNovo). - Preencha os campos obrigatórios: item origem, local origem, item destino, local destino.
- No campo Operação (
edtCD_OPERACAO), informe uma operação não contábil (ST_CONTABIL <> 'S'). - Observe que o rótulo Histórico permanece em texto normal (sem negrito).
- Deixe o campo Histórico vazio ou, se desejar, pressione
<F9>e selecione um histórico válido. - 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-0213e 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:
- Na validação do campo operação (
tabPERDATRANSFCD_OPERACAOValidate) — ao informar a operação. - No evento AfterScroll (
tabPERDATRANSFAfterScroll) — ao navegar entre registros existentes.
Tabela Comparativa Resumida
| Situação | ST_CONTABIL da operação | Histórico obrigatório? | Natureza exigida | Indicação visual |
|---|---|---|---|---|
| Operação contábil | S | Sim | TP_NATUREZA = 'P' | Rótulo em negrito |
| Operação não contábil | <> S | Não | TP_NATUREZA = 'P' (se preenchido) | Rótulo normal |
Procedures impactadas
Rotinas Delphi (referência ao campo CD_HISTORICO da PARMPERDATRANSF)
| Rotina | Arquivo | Função |
|---|---|---|
TfrmTPO044.edtCD_HISTORICOKeyDown | source/TPO044/UTPO044.pas | Abre busca HISTORICOESTOQUE ao pressionar <F9>. |
TdmTPO044.tabPERDATRANSFCD_HISTORICOValidate | source/TPO044/UdmTPO044.pas | Valida existência e natureza (TP_NATUREZA = 'P') do histórico. |
TdmTPO044.tabPERDATRANSFCD_OPERACAOValidate | source/TPO044/UdmTPO044.pas | Determina ObrigaHistorico com base em ST_CONTABIL da operação. |
TdmTPO044.tabPERDATRANSFAfterScroll | source/TPO044/UdmTPO044.pas | Reaplica a regra de obrigatoriedade ao navegar entre registros. |
TdmTPO044.tabPERDATRANSFBeforePost | source/TPO044/UdmTPO044.pas | Impede 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_HISTORICOem scripts SQL (Scripts/). As referências coletadas emCD_HISTORICOno banco de dados referem-se ao campo genérico da tabelaHISTORICOutilizado por diversas outras tabelas do sistema (ex:CONTASHISTORICO,BOLETO,OPERACAO, etc.), não especificamente ao parâmetro daPARMPERDATRANSF.