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();