eventos de bloqueio de pedido

Conceito

O objeto OperacaoPedido permite que interfaces diferentes declarem classes de eventos de bloqueio específicos a serem ignoradas durante a gravação de um pedido.

Utilização

A propriedade 'bloqueiosQueNaoImpedemAGravacaoDaOperacao' deve conter um array com a lista das classes de eventos de bloqueios a serem ignoradas durante a execução do método grava(). Caso um pedido contenha algum evento de bloqueio relacionado (listado na propriedade 'pedidoCab.eventobloqueio') que a classe não esteja listada na propriedade 'bloqueiosQueNaoImpedemAGravacaoDaOperacao' durante a gravação, será retornado erro indicando o bloqueio da gravação.

Exemplo

var op = new OperacaoPedido();

op.nova();

... (inserção dos dados do pedido) ...

var chCriacao = op.pedidoCab.chcriacao;

// CRIAÇÃO DO EVENTO DE BLOQUEIO

var dsBloqueio = new DataSet();

dbCache.copyTableStructure("EVENTO", dsBloqueio);

dsBloqueio.insertWithKey = true

dsBloqueio.create();

dsBloqueio.append();

dsBloqueio.classe = 45045580;

dsBloqueio.motivo = -1897036504 /* Venda com saída do depósi */

dsBloqueio.crpedido = chCriacao;

dsBloqueio.post();

var chBloqueio = dsBloqueio.chave;

dsBloqueio.applyUpdates();

//ATRIBUIÇÃO DO EVENTO AO BLOQUEIO

op.pedidoCab.eventobloqueio = chBloqueio;

//GRAVAÇÃO DO PEDIDO

op.calcula();

op.grava();

// Modificar ignorando bloqueio - FUNCIONA NORMALMENTE

var op2 = new OperacaoPedido()

op2.abre(chCriacao);

op2.bloqueiosQueNaoImpedemAGravacaoDaOperacao = [45045580]

... (Modificação do pedido) ...

op2.calcula();

op2.grava();

// Tentar Modificar sem ignorar bloqueio - GERA ERRO DE BLOQUEIO

var op3 = new OperacaoPedido()

op3.abre(chCriacao);

... (Modificação do pedido) ...

op3.calcula();

op3.grava();