Skip to Content
Author's profile photo DIEGO LOTHER

Modelos de autorização no nível da linha do documento de marketing

Olá pessoal,

Hoje vou escrever um pouco sobre modelos de autorização. Passei por uma situação recente com essa funcionalidade e gostaria de compartilhar minha experiência.

Recentemente no espaço do SAP B1 SDK, surgiu uma questão solicitando uma ajuda para fazer uma query para modelo de autorização no nível da linha do documento. Ao ler um pouco sobre procedimento de autorização, vi em muitas outras questões nos espaços de SAP B1, comentários de que não é possível utilizar informações do nível da linha para modelos de autorização. Na empresa onde trabalho, sabia que já haviam feito modelos de autorização no nível da linha, então fui verificar esta recurso e cheguei nas seguintes considerações:

É possível usar modelos de autorização no nível da linha?

Sim, é possível.

É possível fazer uma query para modelo de autorização usando informações de cabeçalho e linha?

Sim, é possível.

Um exemplo real: Modelo de autorização para pedido de venda

Ex.: Nivel da linha

Nessa query não quero que seja permitido a efetivação de documentos que contenham alguma linha onde o desconto é maior que 20%


SELECT CASE WHEN $[$38.15.NUMBER] > 20 THEN 'TRUE' ELSE 'FALSE' END





Ex.: Nivel de cabeçalho

Nessa query não quero que seja permitido a efetivação de documentos que desconto maior que 20%


SELECT CASE WHEN $[$24.0.NUMBER] > 20 THEN 'TRUE' ELSE 'FALSE' END





Ex.: Nivel de linha e cabeçalho


Nessa query não quero que seja permitido a efetivação de documentos que contenham alguma linha onde o desconto é maior que 20% para o parceiro C00001


SELECT CASE WHEN $[$38.15.NUMBER] > 20 AND $[$4.0.0] = 'C00001'  THEN 'TRUE' ELSE 'FALSE' END


É possível agrupar valores das linhas nas queries de modelos de autorização?

Não. A query será executada uma vez para cada linha, e se alguma delas retornar ‘TRUE’, o procedimento será iniciado. Devido a essa execução linha a linha, não é possível a execução da funcionalidade como SUM(valor), por exemplo.

Obs.: Com alguns testes, pude notar também que a sintaxe $[TABELA.CAMPO] não funciona corretamente em modelos de autorização no nível da linha, nesse cenários que mencionei, deve sempre usar a sintaxe $[$ITEM.COL].

As informações compartilhadas foram testadas no SAP B1 9.0 PL 11 e 9.1 PL 12.

Era isso pessoal, espero que possa ser útil!

Não deixe de registrar seu feedback e compartilhar suas experiências sobre este assunto.


Atenciosamente,

Diego Lother


View Diego Lother's profile on LinkedIn

Assigned Tags

      8 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Rodrigo da Costa Feula
      Rodrigo da Costa Feula

      Diego, achei interessante o post e gostaria de ver com você o seguinte:

      Você fez testes baseados nas linhas em documentos com mais de uma linha?

      Abraço,

      Rodrigo da Costa Feula

      Author's profile photo DIEGO LOTHER
      DIEGO LOTHER
      Blog Post Author

      Olá Rodrigo,

      Efetuei sim. Se você criar uma modelo de aprovação com essa query que olha o campo desconto da linha:

      SELECT CASE WHEN $[$38.15.NUMBER] > 20 THEN 'TRUE' ELSE 'FALSE' END

      e criar um documento de 5 linhas por exemplo.Se uma ou mais linhas independente da posição tiver um desconto maior que 20% o procedimento de aprovação será iniciado.

      O que percebi e não funciona realmente é usar a sintaxe $[TABELA.CAMPO], nesse caso realmente não sei dizer o que acontece, mas o modelo não funciona.


      Abraço,

      Diego Lother


      View Diego Lother's profile on LinkedIn

      Author's profile photo Rodrigo da Costa Feula
      Rodrigo da Costa Feula

      Muito bom Diego, você fez os testes em qual versão?

      Se tiver a oportunidade de verificar entre as versões 9.0, 9.1 e 9.2 seria legal, pois não lembro da query usada à época mas eu e o "pessoal das antigas" já tentamos de várias formas e até então não haviamos conseguido, então seria muito interessante descobrirmos se isto foi ajustado a partir de determinada versão.

      Abraços,

      Rodrigo da Costa Feula

      Author's profile photo DIEGO LOTHER
      DIEGO LOTHER
      Blog Post Author

      Rodrigo,

      As versões que tinha em mão para teste eram:

      9.0 PL 11

      9.1 PL 12

      Em ambas funcionaram corretamente. Não saberia dizer se na 9.0 em PL anterior a 11 funcionaria. Também no momento não tenho nenhuma instalação na versão 9.2, mas quando tiver farei o teste.

      P.S: O tópico que motivou o texto foi esse aqui Approval template query for GRPO Qty greater than PO Qty e a query passada como solução para o tópico também funcionou sem problemas no meu ambiente e no do Danilo(9.1 PL 8) outro membro da SCN.


      Abraço,

      Diego Lother


      View Diego Lother's profile on LinkedIn

      Author's profile photo Former Member
      Former Member

      Bom dia Diego!

      Assim como voce, busquei informações sobre PA para linhas do grid, e só achei negativas. Mas por sorte encontrei seu post.

      Fiz um PA baseado no grupo do item, no grupo do PN, e na condiçao de pagamento do pedido de venda.  Funcionou, sem que tenha inserido nenhum documento anterior. FUNCIONA!

      select distinct case Temp.Name when ‘Cimento’ then ‘True’ else ‘false’ end
      FROM (Select T3.ItmsGrpNam as ‘Name’ From OITM T2 INNER JOIN
      OITB T3 ON T3.ItmsGrpCod = T2.ItmsGrpCod and T3.ItmsGrpNam = ‘Cimento’
      WHERE T2.ItemCode = $[$38.1.text] and T2.ItemName Not Like ‘%Branco%’ and (Select Left(PymntGroup, 2) From OCTG Where GroupNum = $[$47.1.0]) > 1 and (SELECT T2.GroupName
      FROM OCRD T1 INNER JOIN
      OCRG T2 ON T2.GroupCode = T1.GroupCode
      WHERE T1.CardCode = $[$4.1.0]) = ‘Revenda’) Temp

       

      SAP 9.1 PL11

      Author's profile photo Wisley Brito
      Wisley Brito

      Bom dia !!!

      Teste na 9.2 PL 8 e funcionou perfeitamente .

       

      Att,

      Wisley Brito

      Author's profile photo Paulo Henrique Semolini da Silva
      Paulo Henrique Semolini da Silva

      Bom dia Diego.

      Como faço para fazer este procedimento de autorização funcionar quando insiro um pedido de vendas por exemplo, via um portal que utiliza DI API?

      Tem como?

      Author's profile photo DIEGO LOTHER
      DIEGO LOTHER
      Blog Post Author

      Oi Paulo,

      Espero que você esteja bem.

      Você pode dar uma olhada nesse link aqui https://answers.sap.com/questions/103375/sdk---create-sales-order-and-send-for-approval.html?childToView=115469#answer-115469 que irá mostrar o que você consegue fazer com procedimento de aprovação de di api.

      Att,

      Diego Lother