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
- 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: 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) |