cancel
Showing results for 
Search instead for 
Did you mean: 

Modelo de Autorização

karlomr
Explorer
0 Kudos

Ao configurar o modelo de autorização para ser aplicado por % de desconto, não consigo lançar os descontos por linha de documento. Como proceder nesses casos?

O sistema apresenta log de erro :"Could not commit transaction: Error -1 detected during transaction"

Att,

Karlo Mesquita Rodrigues

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

Boa Noite Karlo.

O modelo utilizado pela SAP de bloqueio de documentos não é dos melhores, principalmente pelo fato de que os bloqueios só ocorrem na inserção de documentos, não ocorrendo na alteração. Isto faz por exemplo... um pedido de venda que não pode ter desconto, seja gravado sem desconto e posteriormente alterar dando desconto qualquer.

Para verificar desconto por linha na hora de venda, eu trato da seguinte forma.

O vendedor pode fazer o orçamento de venda da forma que quiser. mas na hora de copiar para pedido de venda eu criei uma rotina que só se pode gravar pedido, alterar não (sbo_sp_transactionnotification). Como só pode inserir, eu verifico na cotação os descontos aplicados e não no pedido de venda. Desta forma realizo o processo de bloqueio.

At. Junior

karlomr
Explorer
0 Kudos

Boa tarde Junior,

Utilizando a Notification consigo ainda criar o pedido de autorização? A mensagem para um gestor por exemplo em que ele autoriza o desconto?

Edited by: Karlo Mesquita on Jul 25, 2011 8:47 PM

Former Member
0 Kudos

Bom dia

O notification você utiliza apenas para bloquear alterações no pedido de venda, onde o usuário só poderá inserir pedido de venda.

Você pode estar criando uma regra de bloqueio no próprio SAP utilizando a tela de processo de procedimento de autorização.

Para criar esta regra tu deverá criar um código SQL verificando se houve desconto aplicado na cotação de venda que está originando o pedido de venda. A tabela a ser visualizada é a QUT1.

Segue abaixo uma consulta formatada onde é verificado se o valor unitário final do item está abaixo de 5% da lista de preço no qual está amarrada pela condição de pagamento.

Caso for verdadeiro, o usuário está aplicando desconto acima do permitido, retorna TRUE, fazendo com que o sistema entende que deve criar o processo de bloqueio.


declare @ItemCode      nvarchar(20),
        @vl_item_ped   money,
        @pr_desconto   money,
        @vl_item_lista money,
        @groupnum      smallint,
        @bloqueio      char(04)
        
declare c_cursor cursor for

select b.itemcode, b.price, b.discprcnt, a.groupnum
  from OQUT a, QUT1 b
 where a.DocEntry =  b.DocEntry
   and a.DocEntry = $[$38.44.number]
   
open c_cursor
while 1=1 
 begin
  fetch next from c_cursor into @ItemCode, @vl_item_ped, @pr_desconto, @groupnum
  if @@fetch_status <> 0 break
  
  if @pr_desconto > 5
   begin
    select @bloqueio = 'TRUE'
    break
   end
   
  select @vl_item_lista = b.Price
    from OCTG a, ITM1 b
   where a.ListNum = b.PriceList
     and a.GroupNum = @groupnum
     and b.ItemCode = @ItemCode
     
  if @vl_item_ped < @vl_item_lista
   if 100 - ((@vl_item_ped / @vl_item_lista) * 100 ) > 5
    select @bloqueio = 'TRUE'
 end
close c_cursor
deallocate c_cursor

if @bloqueio = 'TRUE'
 select @bloqueio

At. Junior.

Answers (0)