Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Formula validação não funciona


fernandolk_1992

Posts Recomendados


  • Tópicos Que Criei:  13
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  35
  • Conteúdo/Dia:  0.04
  • Reputação:   5
  • Pontos/Conquistas:  307
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Dispositivo:  Windows

Bom Dia a Todos.

Estou criando uma formula de validação, para comparar o valor total original da NF com o valor total original da OC e bloquear o lançamento caso o valor total original da NF seja maior que o da OC.

Criei a seguinte consulta SQL onde pego o valor total das Ordens e das Notas:
 

SELECT SUM (ORDEMCOMPRA.COM_VAL) AS 'VALOR_OC'
, NOTAFISCAL.FIS_VALOR AS 'VALOR_NF'

FROM

(SELECT TITMMOVRELAC.CODCOLORIGEM COM_COLO
, TITMMOV.IDMOV COM_IDMOV
,TMOV.VALORBRUTOORIG AS COM_VAL

FROM TMOV
INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV
INNER JOIN TITMMOVRELAC ON TITMMOV.CODCOLIGADA = TITMMOVRELAC.CODCOLDESTINO AND TITMMOV.IDMOV = TITMMOVRELAC.IDMOVDESTINO AND TITMMOV.NSEQITMMOV = TITMMOVRELAC.NSEQITMMOVDESTINO

GROUP BY TITMMOVRELAC.CODCOLORIGEM, TITMMOV.IDMOV, TMOV.VALORBRUTOORIG

) ORDEMCOMPRA
INNER JOIN

/*NOTA FISCAL RM NUCLEUS*/
(SELECT TITMMOV.CODCOLIGADA AS FIS_COL
,TMOV.VALORBRUTOORIG AS FIS_VALOR
,TITMMOVRELAC.IDMOVORIGEM AS FIS_IDO
,TITMMOVRELAC.IDMOVDESTINO AS FIS_DESID
FROM TMOV 
INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV
INNER JOIN TITMMOVRELAC ON TITMMOV.CODCOLIGADA = TITMMOVRELAC.CODCOLDESTINO AND TITMMOV.IDMOV = TITMMOVRELAC.IDMOVDESTINO AND TITMMOV.NSEQITMMOV = TITMMOVRELAC.NSEQITMMOVDESTINO

GROUP BY TITMMOV.CODCOLIGADA, TMOV.DATALANCAMENTO, TMOV.VALORBRUTOORIG, TMOV.CODTMV, NUMEROMOV, TMOV.DATAEMISSAO, TITMMOVRELAC.IDMOVORIGEM, TITMMOVRELAC.IDMOVDESTINO

) NOTAFISCAL ON NOTAFISCAL.FIS_COL = ORDEMCOMPRA.COM_COLO AND NOTAFISCAL.FIS_IDO = ORDEMCOMPRA.COM_IDMOV

WHERE NOTAFISCAL.FIS_DESID = :FRM_IDMOV_N
GROUP BY NOTAFISCAL.FIS_VALOR

Estou usando uma formula para pegar o IDMOV da tabela do movimento: "TABMOV('IDMOV','I')" 

E por fim segue a formula de validação que executa o SQL listado a cima:

EXECSQL('TESTES.3');
SE RESULTSQL('TESTES.3','VALOR_NF') > RESULTSQL('TESTES.3','VALOR_OC');
'VALOR TOTAL DA NOTA FISCAL ULTRAPASSA VALOR DOS ITENS DA ORDEM'
SENAO
'erro'

Quando faço o recebimento da NF, altero o preço unitário do item e recalculo o valor da nota, deixando o valor do documento maior que o valor da Ordem de compra. Porem ao mandar salvar está caindo na mensagem de erro ou seja, não está retornando os campos 'VALOR_NF' e 'VALOR_OC'.

Poderiam me ajudar a identificar o erro?

  • Gostei 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@fernandolk_1992

Boa noite, desculpa a demora para responder esse post, pois ao lê-lo me lembrou que estou passando pela mesma dificuldade neste exato momento,

Pois bem.... vamos começar a explicação o porquê não funcionou sua abordagem. Ao receber o movimento via faturamento os registros das tabelas "%relac%" ainda estão no banco, ou seja, somente em memória, por isso resultou nulo. Podes utilizar a fórmula TABITMRELACPED('PRECOUNITARIO','V') para retornar as informações "do" pedido.... a ênfase na palavra do é porque que essa informação é só em 1 (um) movimento relacionado, pois se tiver mais de um já era! 

Sei que não ajudei muito... mas deixo meu relato! 

Abraços 

 

  • Gostei 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  13
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  35
  • Conteúdo/Dia:  0.04
  • Reputação:   5
  • Pontos/Conquistas:  307
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Dispositivo:  Windows

@luisgustavogomes

Bom dia, agradeço pelo seu retorno.

Eu vi essa formula TABITMRELACPED, mas como você mencionou, ela pega os dados de apenas 1 movimento relacionado e temos casos onde 2 ou mais Ordens geram 1 nota fiscal, dai não consigo aplicar...

Conversei com outras pessoas e chegamos a mesma conclusão que você. Realmente não sei se é possível fazer essa validação via Formula de Consistência ou Formula visual.

Nesse momento estou ativando a opção de tolerância no faturamento, acredito que vai atender a minha necessidade.

Segue TDN sobre essa função:
https://centraldeatendimento.totvs.com/hc/pt-br/articles/4409690094743-Cross-Segmentos-TOTVS-BackOffice-Linha-RM-TOTVS-Gestão-de-Estoque-Compras-e-Faturamento-FAT-Tolerância-no-faturamento

 

  • Gostei 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  900
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.845
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.599
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Eu acredito que usa solução para isso seria a TOTVS criar um tratamento de validação após a gravação das tabelas de relacionamento. Se criam algum parâmetro para validar "apenas" após incluir estas tabelas, seria possível tais validações. Aí o usuário poderia ativar um flag com essa indicação e a validação somente daria após. Creio que seria uma solução. Caso seja o validada, ou seja, a validação não ocorrer, excluem o relacionamento e o movimento gravado inicialmente. Creio que assim seria uma solução pra isso. 

Podemos abrir uma sugestão com isso lá na central colaborativa. O que acham? 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@Jair - Fórmula, boa tarde!

É uma sugestão de suma importância, pois tenho diversos casos que não consigo tratar!

Para tentar amenizar essas situações tenho um JOB a nível de banco de dados para identificar esses erros de recebimento (Ordens de Compra vs Nota Fiscal)  e encaminho para os responsáveis. Mas acredito que isso é básico para uma aplicação do nível do RM.

  Abraços.

  • Gostei 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  900
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.845
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.599
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Então bora abrir lá uma sugestão. E colocar pra o pessoal votar e incentivar. 

  • Gostei 1
Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.