Páginas filhas
  • MOV0013_Aplicar_Valores_de_Itens_No_Contexto_de_Movimento

Assunto

Produto:

TOTVS Gestão de Estoque, Compras e Faturamento

Versões:

11.82 e Superiores

Ocorrência:

Aplicação de Valores dos Itens de Movimento em contexto de Movimento

Ambiente:

Movimento

Passo a passo:

Este documento tem como finalidade apresentar uma solução para os casos em que é necessário considerar APENAS valores de alguns itens do movimento para serem considerados em campos de valores como Subtotal, Valor Líquido, Valor a Ratear para o Financeiro.


Para melhor entendimento da situação será descrito um exemplo de processo:


Situação

É preciso que apenas determinados itens com naturezas especificas sejam deduzidos para o valor financeiro.

Ex: Movimento tem os seguintes itens: item 01 (100,00) – item 02 (150,00) item 03 (200,00) e item 04 (300,00).

A natureza do item 01 e 03 é “1.102.01’’ e do item 02 e 04 é “1.102.02’’.

O valor líquido e o valor bruto tem que ser somado todos os itens, porem o valor financeiro apenas os itens 02 e 04.

Valor Líquido = 750,00 | Valor Bruto = 750,00 | Valor Financeiro = 450,00.

Resumo: Neste caso a necessidade é gerar financeiro apenas sobre os itens 02 e 04 que tem a natureza de operação “1.102.02”.


Funções a serem utilizadas:

TABIRINI = Vai para o primeiro registro da tabela. Parâmetro: Nome da tabela.

TABNATITEM = Valor de um campo da Natureza do Item

TABAVANCA = Avança um registro da tabela. Parâmetro: Nome da tabela.

TABITM = Valor de um campo do item do movimento

TABFIM = É fim da tabela. Parâmetro: Nome da tabela. Resultado: 0-Não 1-Sim


Fórmula criada:

DECL VALFIN;

SETVAR(VALFIN,0);

TABIRINI('TITMMOV');

REPITA

      SE TABNATITEM('CODNAT','S') = '1.102.02'

      ENTAO

SETVAR(VALFIN, VALFIN + TABITM('VALORTOTALITEM' , 'V'))

      FIMSE;

      TABAVANCA('TITMMOV')

ATE TABFIM('TITMMOV') = 1;

VALFIN

OBS: Onde VALFIN é uma variável declarada para pegar o valor total dos itens.


Criando uma nova fórmula a partir da já existente para uma nova situação:

A máscara de produtos é ##.## e na movimentação existem itens com códigos iniciados com 10, 11 e 12, porem é preciso que o Subtotal considere apenas os produtos iniciados com 11.

A partir da fórmula do tópico anterior basta executar os seguintes procedimentos.


Crie uma fórmula para a base de cálculo conforme indicado acima com as alterações abaixo:

1 - Na linha do SE ... coloque uma condição para que totalize apenas um determinado produto, por exemplo: SUBSTR (TABPRD ('CODIGOPRD' , 'S'), 1 , 2)

2 - Na claúsula ENTAO no lugar do valor total do item coloque KQT * KPU

3 - Inclua um movimento com vários itens e verifique se o sub total contém apenas o valor do(s) produto(s) iniciados 11

Então a fórmula ficaria assim:

DECL VALFIN;

SETVAR(VALFIN,0);

TABIRINI('TITMMOV');

REPITA

      SE SUBSTR (TABPRD ('CODIGOPRD' , 'S'), 1 , 2) = ‘11’

      ENTAO

SETVAR(VALFIN, VALFIN + KQT * KPU)

      FIMSE;

      TABAVANCA('TITMMOV')

ATE TABFIM('TITMMOV') = 1;

VALFIN


  • Informações Adicionais

 

- Este tipo de fórmula não pode ser testado na janela de fórmulas, pois apresenta erro de travamento, isto porque antes de chamar a função TABAVANCA o sistema busca as chaves do contexto e carrega os dados do primeiro item de movimento no cache, pois o contexto está apontando para este item. A função TABAVANCA move o ponteiro do cache, mas não há garantia de que o valor seguinte é correto e qualquer função executada em seguida irá reposicionar o cache no primeiro item e a execução da fórmula trava.

- As fórmulas que percorrem a tabela de item de movimento SOMENTE funcionarão nas fórmulas de VALOR OUTROS e VALOR FINANCEIRO do movimento. Esta é uma limitação devido ao mecanismo de posicionamento da fórmula. Segue abaixo a relação de funções que possuem esta restrição TABIRINI, TABIRFIM,TABAVANCA, TABVOLTA, TABINI, TABFIM.

Observações:

Para mais informações:


 Consulte o WikiHelp TOTVS


   COMUNIDADE  R@Materiais e Suprimentos


Canais de Atendimento:

Abertura de Chamados Através do Portal Totvs www.suporte.totvs.com.br

Telefônico: 4003-0015 Escolhendo as opções 2 – (Software), 2 – (Suporte Técnico), 3 – (RM), 5 – (Materiais)