on 07-22-2011 11:28 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.