Neste guia serão abordadas as funcionalidades relacionadas a Operação Pedido de Devolução, voltadas aos desenvolvedores do Bematech ERP, dando a visão a quem irá implementar melhorias no sistema utilizando o objeto de gestão responsável pela devolução de baixas de pedido.
O objetivo deste guia é orientar como utilizar as APIs disponibilizadas para manipular uma Operação Pedido de Devolução, onde iremos explanar desde a criação de um pedido de devolução, edição, até funcionalidades como cancelamento de saldo, exclusão, dentre outras funcionalidades.
Considerando-se a complexidade de um ERP, não serão descritos nesse guia termos introdutórios do sistema.
Para a perfeita compreensão do uso do objeto de gestão responsável por manipular Operação Pedido de Devolução, se faz necessário entender sua abrangência e estar familiarizado com a linguagem do sistema Bematech ERP. Devemos iniciar tendo uma visão de como desenvolver no sistema Bematech ERP, portanto realize a leitura do Guia de estudo da Plataforma Bematech ERP, além disso é necessário que o leitor tenha o conhecimento de uso e dos conceitos do Bematech ERP.
O objeto responsável por manipular as operações de Pedido de Devolucao é o OperacaoPedidoDevolucao. O OperacaoPedidoDevolucao é uma especialização do objeto OperacaoPedido e desta forma, tem como principais API's seus datasets. Lembrando que como a diferenciação entre um pedido de Compras, Vendas, etc é a classe de operação, o objeto OperacaoPedidoDevolucao é utilizado para manipular qualquer pedido de devolução independente desta classe.
Antes de conhecermos os conceitos e as APIs do objeto de gestão OperacaoPedidoDevolucao, precisamos entender a base para geração destes dataset que é o modelo de dados do pedido. Para cada item de baixa de pedido devolvido é gerado um novo registro na tabela PEDIDO que é uma cópia simétrica do item devolvido. A relação entre a baixa de pedido e a devolução é o campo CHDEVOLUC gravado nos registros que representam a devolução. Este campo contém a chave do item devolvido.
Em seguida, devemos conhecer a API do OperacaoPedidoDevolucao, que é uma especialização da OperacaoPedido. Deve ser realizada a leitura do seguinte manual que explica as principais API's do OperacaoPedido: datasets do operacaoPedido. Além disso, o OperacaoPedidoDevolucao possui o dataset baixaDePedido com as baixas que estão sendo devolvidas.
Para uma melhor visão de como utilizar o OperacaoPedidoDevolucao, abaixo serão listados os principais casos de uso e a explicação de quais as APIs devem ser utilizadas.
configurando instância
Ao realizar a instância do OperacaoPedidoDevolucao deve-se passar qual a classe de configuração de pedido desejamos instanciar. Essa classe de configuração determina qual configuração de campos será utilizada, ou seja, será pesquisado, por exemplo, a definição da classe de quais campos são de item ou de cabeçalho no pedido. A classe deve ser passada na instância do objeto e, no caso de não ser passada nenhuma informação, será utilizada a classe mãe -2008879000; /* Pedidos ou Provisões */.
No cadastro da classe de dados usada para indicar qual configuração de pedido desejamos instanciar, existe um campo chamado "Classe de Configuração" onde deve ser informado a classe de configuração da devolução.
var novoPedidoDevol = new OperacaoPedidoDevolucao(<informar a chave da classe de configuração do Pedido>);
Exemplo de idbc realizando a instância do OperacaoPedidoDevolucao utilizando a classe de configuração de Saídas. Assim como a classe Saídas, também podem ser utilizadas quaisquer classes de pedido que seja exibida no processo Configuração de Campos do Pedido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
aproveitando a instância do pedido de devolução
Conforme explicado no guia técnico das operações, para maior performance, é possível aproveitar a instância do OperacaoPedidoDevolucao e realizar várias operações sem a necessidade de reinstanciar o OperacaoPedidoDevolucao. Ou seja, é possível instanciar somente uma vez o OperacaoPedidoDevolucao e criar, abrir, editar uma operação após a outra. Para isto faremos uso dos métodos "estorna" e "fecha", conforme explicado no passo a passo abaixo.
Ao instanciar um OperacaoPedidoDevolucao para a criação de uma nova baixa de pedido, conforme descrito em criar devolução total de uma baixa de devolução, utilizamos o método estorna(), em seguida atualizamos os datasets pedido e pedidoCab e gravamos utilizando o método grava.
Abaixo temos o código para realizar a devolução de uma baixa de pedido. Vamos considerar que a baixa de pedido já está gravada
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
var chCriacaoBaixa = <informe aqui a chave de criação da baixa que será devolvida>;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
Caso seja necessário criar um novo pedido de devolução, não se faz necessário instanciar outra vez o OperacaoPedidoDevolucao, pois podemos aproveitar a mesma instância criada anteriormente, bastando para isso utilizar o método fecha que irá deixar o objeto pronto para manipular uma nova operação.
Dessa forma podemos chamar o fecha após a gravação do primeiro pedido.
novoPedidoDevol.fecha();
Após fechar a operação, caso queira realizar um novo pedido de devolução, basta chamar o método estorna.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida>);
Em seguida devem ser atualizadas as informações de cabeçalho. Os dados de item não são obrigatórios, pois os itens do pedido de devolução são uma cópia simétrica dos itens da baixa que está sendo devolvida.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e, ao final, executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo completo no idbc criando duas baixas de pedido com a mesma instância do OperacaPedidoBaixaPedido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
//Primeiro pedido devolução
var chCriacaoBaixa1 = <informe aqui a chave de criação da baixa que será devolvida>;
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa1);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
novoPedidoDevol.fecha();
//Segundo pedido de devolução
var chCriacaoBaixa2 = <informe aqui a chave de criação da baixa que será devolvida>;
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa2);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
novoPedidoDevol.fecha();
buscando baixas de pedido para devolução utilizando condição sql
Para inserir baixas em uma operação de pedido de devolução é necessário o uso do método estorna.
Este método recebe como parâmetro uma condição sql que permita identificar a baixa no banco de dados. São utilizados os campos do pedido como filtro, sendo mais comum o uso dos campos CHCRIACAO e CHAVE.
Podem ser utilizadas condições sql mais complexas, porém deve-se sempre considerar que a condição informada como parâmetro será internamente inserida em uma estrutura neste formato: "and ( " + condicaoInformadaComoParametro + " )", logo, deve-se considerar utilizar condições que obedeçam esta estrutura. As condições sql podem trazer mais de uma baixa.
Exemplos no idbc de inclusão de baixas para devolução utilizando condição sql. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
//Exemplo 1:
//Buscando baixa de pedido por item
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.estorna("CHAVE = " + <chave do item de baixa que será devolvido>);
//Exemplo 2:
//Buscando baixa de pedido por chave de criação
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.estorna("CHCRIACAO = " + chave de criação da baixa que será devolvida);
//Exemplo 3:
//Buscando baixas de pedido da pessoa "Maria", onde a data de emissão é "12/01/2015"
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.fechaOperacaoNoTerminoDaGravacao = false;
novoPedidoDevol.estorna("PESSOA = 4268595 /* Maria */ and PROGRAMACA = '01/12/2015'");
Além de uma condição sql, caso exista um dataset de baixas de pedido que serão devolvidas disponível, e não seja necessário realizar uma nova consulta, este dataset poderá ser passado como parâmetro para o método estorna().
Neste caso todas baixas de pedido que estiverem no dataset serão adicionados à operação de devolução.
API estorna informando um dataset:
novoPedidoDevol.estorna(dataSet);
Um pedido de devolução pode ser de dois tipos: troca ou estorno.
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Para indicar que esta devolução será uma troca, deveremos informar na propriedade "tipoDevolucao" que trata-se de um pedido de troca.
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Para indicar que esta devolução será um estorno, deveremos informar na propriedade "tipoDevolucao" que trata-se de um pedido de estorno.
novoPedidoDevol.tipoDevolucao = TipoDevolucao.ESTORNO;
A diferença entre troca e estorno está no valor do crédito. No caso da troca, o acréscimo proveniente de negociação não interfere no valor do crédito. Já no estorno, o acréscimo compõe o valor do crédito.
Exemplo: Foi realizada uma venda, onde a soma dos itens é R$ 1.000,00. A negociação foi feita em 10x no CC com 10% de juros, totalizando a venda em R$ 1.100,00.
1. Pedido de Troca
Valor do crédito calculado: R$ 1.000,00
2. Pedido de Estorno
Valor do crédito calculado: R$ 1.100,00
criar devolução total de uma baixa de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida>);
Em seguida devem ser atualizadas as informações de cabeçalho. Os dados de item não são obrigatórios, pois os itens do pedido de devolução são uma cópia simétrica dos itens da baixa que está sendo devolvida.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Observação: Os passos acima de atualizar o cabeçalho do pedido, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa que será devolvida já está gravada.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
var chCriacaoBaixa = <chave de criação da baixa de pedido que será devolvida>;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
criar devolução parcial (quantidade) de uma baixa de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item do pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que a baixa de pedido que será devolvida parcialmente possui apenas 1 item com quantidade -5. Realizaremos a devolução de apenas 2 quantidades deste item.
novoPedidoDevol.pedido.quantidade = -2;
novoPedidoDevol.pedido.post();
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa de pedido, que será devolvida parcialmente, já está criada e que possui apenas um item com quantidade 5. Realizaremos a devolução de apenas 2 quantidades deste item.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
var chCriacaoBaixa = <chave de criação da baixa que será devolvida>;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.pedido.quantidade = -2;
novoPedidoDevol.pedido.post();
novoPedidoDevol.grava();
criar devolução parcial (item) de uma baixa de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida parcialmente>);
ou
novoPedidoDevol.estorna("CHAVE = " + <chave do item da baixa que será devolvido>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item do pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que a baixa de pedido que será devolvida parcialmente possui 2 itens e que cada item possui 1 quantidade. Realizaremos a devolução de apenas 1 item.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada */
//1. Utilizou método "estorna()" passando a chave de criação da baixa que será devolvida parcialmente.
//novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa de pedido que será devolvida parcialmente>);
novoPedidoDevol.pedido.last();
novoPedidoDevol.pedido.del();
ou
//2. Utilizou método "estorna()" passando a chave do item de baixa que será devolvido
//novoPedidoDevol.estorna("CHAVE = " + <chave do item de baixa que será devolvido>);
//não há necessidade de manipular o dataset pedido, apenas o item de baixa listado será devolvido na gravação do //pedido de devolução.
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa de pedido que será devolvida parcialmente já está criada, possui 2 itens e cada item com 1 quantidade. Realizaremos a devolução de apenas 1 item.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
//modo 1. Utilizou método "estorna()" passando a chave de criação da baixa que será devolvida parcialmente.
var chCriacaoBaixa = <chave de criação da baixa que será devolvida parcialmente>;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.pedido.last();
novoPedidoDevol.pedido.del();
novoPedidoDevol.grava();
ou
//modo 2. Utilizou método "estorna()" passando a chave do item de baixa que será devolvido
var chaveItem1 = <chave do item de baixa que será devolvido>;
novoPedidoDevol.estorna("CHAVE = " + chaveItem1);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
criar devolução parcial (quantidade e item) de uma baixa de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida parcialmente>);
ou
novoPedidoDevol.estorna("CHAVE = " + <chave do item de baixa que será devolvido>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item do pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que a baixa de pedido que será devolvida parcialmente possui 3 itens e que cada item com 5 quantidades. Realizaremos a devolução de todas as quantidades de 1 item e 2 quantidades de outro item. O terceiro item da baixa de pedido não será devolvido.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada */
//1. Utilizou método "estorna()" passando a chave de criação da baixa que será devolvida parcialmente.
//novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa de pedido que será devolvida parcialmente>);
var pedido = novoPedidoDevol.pedido;
pedido.last();
pedido.del();
pedido.first();
pedido.quantidade = -2;
pedido.post();
ou
//2. Utilizou método "estorna()" passando a chave do item de baixa que será devolvido
//novoPedidoDevol.estorna("CHAVE in (" + <array de chaves dos itens de baixa que serão devolvidos> + ")");
var pedido = novaBaixaPedido.pedido;
pedido.first();
pedido.quantidade = -2;
pedido.post();
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa de pedido que será devolvida parcialmente já está criada, possui 3 itens e cada item com 5 quantidades. Realizaremos a baixa de todas as quantidades de 1 item e 2 quantidades de outro item. O terceiro item da baixa de pedido não será devolvido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
//modo 1. Utilizou método "estorna()" passando a chave de criação da baixa que será devolvida parcialmente.
var chCriacaoBaixa = <chave de criação da baixa de pedido que será devolvida parcialmente>;
var chaveItem1 = <chave do item de baixa que terá apenas 2 quantidades devolvidas>;
var chaveItem3 = <chave do item de baixa que não será devolvido>;
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
if (pedido.find(chaveItem3)) {
pedido.del();
}
if (pedido.find(chaveItem1)) {
pedido.quantidade = -2;
pedido.post();
}
novoPedidoDevol.grava();
ou
//modo 2. Utilizou método "estorna()" passando a chave do item de baixa que será devolvido
var chaveItem1 = <chave do item de baixa que terá apenas 2 quantidades devolvidas>;
var chaveItem2 = <chave do item de baixa que será devolvido totalmente>;
novoPedidoDevol.estorna("CHAVE in (" + [chaveItem1, chaveItem2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
if (pedido.find(chaveItem1)) {
pedido.quantidade = -2;
pedido.post();
}
novoPedidoDevol.grava();
criar devolução total de múltiplas baixas de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas que serão devolvidas> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho. Os dados de item não são obrigatórios, pois os itens do pedido de devolução são uma cópia simétrica dos itens das baixas que estão sendo devolvidas.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Observação: Os passos acima de atualizar o cabeçalho do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que as baixas de pedido que serão devolvidas juntas, já estão criadas.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
//realiza a devolução total das baixas de pedido
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
var chCriacaoBaixa1 = <chave de criação da primeira baixa de pedido que será devolvida>;
var chCriacaoBaixa2 = <chave de criação da segunda baixa de pedido que será devolvida>;
novoPedidoDevol.estorna("CHCRIACAO in (" + [chCriacaoBaixa1, chCriacaoBaixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
criar devolução parcial (quantidade) de múltiplas baixas de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas de pedido que serão devolvidas parcialmente> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item do pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que baixas de pedido que serão devolvidas parcialmente possuem (cada uma delas) apenas 1 item com quantidade 5. Realizaremos a devolução de apenas 2 quantidades do item de cada baixa de pedido.
var pedido = novoPedidoDevol.pedido;
for (pedido.first(); ! pedido.eof; pedido.next()) {
pedido.quantidade = -2;
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que as baixas de pedido que serão devolvidas parcialmente já estão criadas e que possuem (cada uma delas) apenas 1 item com quantidade 5. Realizaremos a devolução de apenas 2 quantidades do item de cada baixa de pedido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacaoBaixa1 = <chave de criação da primeira baixa de pedido que será devolvida parcialmente>;
var chCriacaoBaixa2 = <chave de criação da segunda baixa de pedido que será devolvida parcialmente>;
novoPedidoDevol.estorna("CHCRIACAO in (" + [chCriacaoBaixa1, chCriacaoBaixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
for (pedido.first(); ! pedido.eof; pedido.next()) {
pedido.quantidade = -2;
pedido.post();
}
novoPedidoDevol.grava();
criar devolução parcial (item) de múltiplas baixas de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas de pedido que serão devolvidas parcialmente> + ")");
ou
novoPedidoDevol.estorna("CHAVE in (" + <array de chaves dos itens de baixas que serão devolvidos> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item de pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que as baixas de pedido que serão devolvidas parcialmente possuem 2 itens e que cada item possui 1 quantidade. Realizaremos a devolução parcial de apenas 1 item de cada baixa de pedido.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada */
//1. Utilizou método "estorna()" passando array de chaves de criação das baixas que serão devolvidas parcialmente.
//novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas que serão devolvidas parcialmente> + ")");
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
if (pedido.find(<chave do item (primeira baixa) que não será devolvido>)) {
pedido.del();
}
if (pedido.find(<chave do item (segundo baixa) que não será devolvido>)) {
pedido.del();
}
ou
//2. Utilizou método "estorna()" passando array de chaves de itens de baixas que serão devolvidos
//novoPedidoDevol.estorna("CHAVE in (" + <array de chaves de itens de baixas que serão devolvidos> + ")");
//não há necessidade de manipular o dataset pedido, apenas os itens de baixas listados serão devolvidos na gravação do //pedido de devolução.
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que as baixas de pedido que serão devolvidas juntas já estão criadas, cada baixa possui 2 itens com 1 quantidade. Realizaremos a devolução parcial de apenas 1 item de cada baixa de pedido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
//modo 1. Utilizou método "estorna()" passando array de chaves de criação das baixas que serão devolvidas parcialmente.
var chCriacaoBaixa1 = <chave de criação da primeira baixa de pedido que será devolvida parcialmente>;
var chCriacaoBaixa2 = <chave de criação da segunda baixa de pedido que será devolvida parcialmente>;
var chaveItem2Baixa1 = <chave do segundo item da primeira baixa de pedido que será devolvida parcialmente. Este item não será devolvido>;
var chaveItem2Baixa2 = <chave do segundo item da segunda baixa de pedido que será devolvida parcialmente. Este item não será devolvido>;
novoPedidoDevol.estorna("CHCRIACAO in (" + [chCriacaoBaixa1, chCriacaoBaixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
if (pedido.find(chaveItem2Baixa1)) {
pedido.del();
}
if (pedido.find(chaveItem2Baixa2)) {
pedido.del();
}
novoPedidoDevol.grava();
ou
//modo 2. Utilizou método "estorna()" passando array de chaves de itens de baixas que serão devolvidos
var chaveItem1Baixa1 = <chave do primeiro item da primeira baixa de pedido que será devolvida parcialmente>;
var chaveItem1Baixa2 = <chave do primeiro item da segunda baixa de pedido que será devolvida parcialmente>;
novoPedidoDevol.estorna("CHAVE in (" + [chaveItem1Baixa1, chaveItem1Baixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.grava();
criar baixa parcial (quantidade e item) de múltiplos pedidos.
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas de pedido que serão devolvidas parcialmente> + ")");
ou
novoPedidoDevol.estorna("CHAVE in (" + <array de chaves dos itens de baixas que serão devolvidos> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Para inserir as informações de item de pedido de devolução, deve ser manipulada a api de dataset pedido. Consideraremos que baixas de pedido que serão devolvidas parcialmente possuem (cada uma) 3 itens e cada item com 5 quantidades. Realizaremos a devolução de todas as quantidades de 1 item e 2 quantidades de outro item em cada baixa de pedido. O terceiro item de cada baixa de pedido não será devolvido.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada */
//1. Utilizou método "estorna()" passando array de chaves de criação das baixas que serão devolvidas parcialmente.
//novoPedidoDevol.estorna("CHCRIACAO in (" + <array de chaves de criação das baixas que serão devolvidas parcialmente> + ")");
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
pedido.first();
while(!pedido.eof) {
if (pedido.find(<chave do segundo item da primeira baixa de pedido>) ||
pedido.find(<chave do segundo item da segunda baixa de pedido>)) {
pedido.quantidade = -2;
baixa.post();
pedido.next();
} else if (pedido.find(<chave do terceiro item da primeira baixa de pedido>) ||
pedido.find(<chave do terceiro item da segunda baixa de pedido>)) {
pedido.del();
}
}
ou
//2. Utilizou método "estorna()" passando array de chaves de itens de baixas que serão devolvidos
//novoPedidoDevol.estorna("CHAVE in (" + <array de chaves de itens de baixas que serão devolvidos> + ")");
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
if (pedido.find(<chave do segundo item da primeira baixa de pedido>) {
baixa.quantidade = -2;
baixa.post();
}
if (pedido.find(<chave do segundo item da segunda baixa de pedido>) {
baixa.quantidade = -2;
baixa.post()
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que baixas de pedido que serão devolvidas parcialmente possuem (cada uma) 3 itens e cada item com 5 quantidades. Realizaremos a devolução de todas as quantidades de 1 item e 2 quantidades de outro item em cada baixa de pedido. O terceiro item de cada baixa de pedido não será devolvido.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
//modo 1. Utilizou método "estorna()" passando array de chaves de criação das baixas que serão devolvidas parcialmente.
var chCriacaoBaixa1 = <chave de criação da primeira baixa de pedido que será devolvida parcialmente>
var chCriacaoBaixa2 = <chave de criação da segunda baixa de pedido que será devolvida parcialmente>
var chaveItem2Baixa1 = <chave do segundo item da primeira baixa de pedido que será devolvida parcialmente>
var chaveItem3Baixa1 = <chave do terceiro item da primeira baixa de pedido que será devolvida parcialmente. Este item não será devolvido>
var chaveItem2Baixa2 = <chave do segundo item da segunda baixa de pedido que será devolvida parcialmente>
var chaveItem3Baixa2 = <chave do terceiro item da segunda baixa de pedido que será devolvida parcialmente. Este item não será devolvido>
novoPedidoDevol.estorna("CHCRIACAO in (" + [chCriacaoBaixa1, chCriacaoBaixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
pedido.first();
while(!pedido.eof) {
if (pedido.find(chaveItem2Baixa1) || pedido.find(chaveItem2Baixa2)) {
pedido.quantidade = -2;
pedido.post();
pedido.next();
} else if (pedido.find(chaveItem3Baixa1) || pedido.find(chaveItem3Baixa2)) {
pedido.del();
}
}
novoPedidoDevol.grava();
ou
//modo 2. Utilizou método "estorna()" passando array de chaves de itens de baixas que serão devolvidos
var chaveItem1Baixa1 = <chave do primeiro item da segunda baixa de pedido que será devolvida parcialmente>
var chaveItem2Baixa1 = <chave do segundo item da segunda baixa de pedido que será devolvida parcialmente>
var chaveItem1Baixa2 = <chave do primeiro item da segunda baixa de pedido que será devolvida parcialmente>
var chaveItem2Baixa2 = <chave do segundo item da segunda baixa de pedido que será devolvida parcialmente>
novoPedidoDevol.estorna("CHAVE in (" + [chaveItem1Baixa1, chaveItem2Baixa1, chaveItem1Baixa2, chaveItem2Baixa2] + ")");
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
var pedido = novaBaixaPedido.pedido;
pedido.indexFieldNames = "CHDEVOLUC";
pedido.first();
while(! pedido.eof) {
if (pedido.find(chaveItem2Baixa1) || pedido.find(chaveItem2Baixa2)) {
pedido.quantidade = -2;
pedido.post();
pedido.next();
}
}
novoPedidoDevol.grava();
criar um novo pedido de devolução aprovado
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida>);
Em seguida devem ser atualizadas as informações de cabeçalho. Os dados de item não são obrigatórios, pois os itens do pedido de devolução são uma cópia simétrica dos itens das baixas que estão sendo devolvidas.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Observação: Os passos acima de atualizar o cabeçalho do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Em seguida deve ser chamado o aprova.
No pedido de devolução não nos preocupamos com a negociação, pois ela é feita automaticamente pelo objeto de gestão.
novoPedidoDevol.aprova();
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa que será devolvida já está gravada.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
var chCriacaoBaixa = <chave de criação baixa de pedido que será devolvida>
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.aprova();
novoPedidoDevol.grava();
criar pedido de devolução com local de escrituração físico diferente do local de escrituração da baixa de pedido
Para realizar a criação de um pedido de devolução, devemos iniciar instanciando o OperacaoPedidoDevolucao passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Vendas p Consumo, Vendas p Consumo ST, etc, devemos instanciar o OperacaoPedidoDevolucao passando a classe Saídas.
A operação realizada será uma troca.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
Para indicar em qual local de escrituração está está ocorrendo fisicamente a operação de devolução, deverá ser informado na propriedade "locEscrituFisicoDaDevolucao" o local de escrituração onde está sendo realizada a devolução.
novoPedidoDevol.locEscrituFisicoDaDevolucao = 187654 /* Loc Escritu Iguatemi */;
Em seguida deve ser utilizado o método "estorna" conforme api da Operacao.
novoPedidoDevol.estorna("CHCRIACAO = " + <chave de criação da baixa que será devolvida>);
Em seguida devem ser atualizadas as informações de cabeçalho. Os dados de item não são obrigatórios, pois os itens do pedido de devolução são uma cópia simétrica dos itens das baixas que estão sendo devolvidas.
Para atualizar as informações do cabeçalho do pedido de devolução, basta informar os dados de cabeçalho sem necessidade de dar um append no dataset e ao final executar o post do dataset, visto que o pedidoCab somente tem um item e é preenchido automaticamente pelo objeto, sempre.
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
Observação: Os passos acima de atualizar o cabeçalho do pedido de devolução, ao desenvolver interfaces com o WebFramework o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de item e grade de cabeçalho terem como referência o dataset do objeto.
Na gravação do pedido de devolução, se o local de escrituração em que a devolução está ocorrendo fisicamente for diferente do local de escrituração da baixa de pedido, e o pedido de devolução estiver aprovado, será gerado um pedido de transferência de saída do local de escrituração da baixa devolvida para o local de escrituração físico da devolução.
Esta operação de transferência é necessária para ajuste de estoque, pois a mercadoria está fisicamente no local de escrituração em que foi realizado a devolução e não no local de escrituração da baixa devolvida.
Deste modo, aprovaremos a devolução antes de realizar a gravação.
novoPedidoDevol.aprova();
Em seguida deve ser chamado o grava:
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que a baixa que será devolvida já está gravada e que seu local de escrituração é o "193456 Loc Escritu Centro".
O pedido de devolução ocorrerá no local de escrituração "187654 Loc Escritu Iguatemi".
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
novoPedidoDevol.tipoDevolucao = TipoDevolucao.TROCA;
novoPedidoDevol.locEscrituFisicoDaDevolucao = 187654 /* Loc Escritu Iguatemi */;
var chCriacaoBaixa = <chave de criação baixa de pedido que será devolvida>
novoPedidoDevol.estorna("CHCRIACAO = " + chCriacaoBaixa);
novoPedidoDevol.pedidoCab.motivodevo = 407108 /* Defeito de Fabricação */;
novoPedidoDevol.pedidoCab.post();
novoPedidoDevol.aprova();
novoPedidoDevol.grava();
abrindo pedido de devolução e alterando dados
Para realizar a edição de dados de um pedido de devolução, já gravada anteriormente, deve ser instanciado o OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que será aberto>);
Em seguida os dados do cabeçalho podem ser acessados e editados pelo dataset pedidoCab.
novoPedidoDevol.pedidoCab.motivodevo = 200532 /* Cliente desistiu da compra */;
novoPedidoDevol.pedidoCab.post();
Os dados dos itens podem acessados e editados pelo dataset pedido. Vamos considerar que o pedido de devolução possuía um item com quantidade -2.
novoPedidoDevol.pedido.quantidade = -1;
novoPedidoDevol.pedido.post();
Caso precise alterar mais de um item do pedido de devolução, o dataset pedido pode ser percorrido para edição.
var pedido = novoPedidoDevol.pedido;
for (pedido.first(); !pedido.eof; pedido.next() ){
pedido.quantidade = -1;
pedido.post();
}
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que pedido de devolução está gravado e que 2 itens, onde cada item tem quantidade -2. Iremos alterá-lo para devolver apenas 1 quantidade de cada item.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução que será aberto.>
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.pedidoCab.motivodevo = 200532 /* Cliente desistiu da compra */;
novoPedidoDevol.pedidoCab.post();
var pedido = novoPedidoDevol.pedido;
for (pedido.first(); !pedido.eof; pedido.next()) {
pedido.quantidade = -1;
pedido.post();
}
novoPedidoDevol.grava();
abrindo pedido de devolução e aprovando
Para aprovar um pedido de devolução já gravado anteriormente, deve ser instanciado o objeto OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que será aberto>);
Em seguida deve ser chamado o aprova.
No pedido de devolução não nos preocupamos com a negociação, pois ela é feita automaticamente pelo objeto de gestão.
novoPedidoDevol.aprova();
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que o pedido de devolução já está gravado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.aprova();
novoPedidoDevol.grava();
abrindo pedido de devolução e desaprovando
Para desaprovar um pedido de devolução já aprovado e gravado anteriormente, deve ser instanciado o objeto OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que será aberto>);
Em seguida deve ser utilizado o método desaprova, porém para desaprovar um pedido devolução ele não deve ter sido baixado.
novoPedidoDevol.desaprova();
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que o pedido de devolução já está aprovado e gravado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.desaprova();
novoPedidoDevol.grava();
cancelando saldo de um pedido de devolução
Para cancelar o saldo de um pedido de devolução já gravado anteriormente, deve ser instanciado o OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que terá o saldo cancelado>);
Em seguida realizar o cancelamento do saldo do pedido de devolução utilizando o método cancelaSaldo() do objeto OperacaoPedidoDevolucao.
novoPedidoDevol.cancelaSaldo();
O cancelamento de saldo não pode ser realizado apenas para um item do pedido de devolução, e após o cancelamento de saldo não existirá mais pendência de baixa do pedido de devolução.
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que o pedido de devolução já está gravado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.cancelaSaldo();
novoPedidoDevol.grava();
descancelando saldo de um pedido de devolução
Para descancelar o saldo de um pedido de devolução que já gravado anteriormente, deve ser instanciado o OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que terá o saldo cancelado>);
Em seguida realizar o cancelamento do saldo do pedido de devolução utilizando o método cancelaSaldo() do objeto OperacaoPedidoDevolucao.
novoPedidoDevol.descancelaSaldo();
O descancelamento de saldo não pode ser realizado apenas para um item do pedido de devolução, e após o descancelamento de saldo voltará a existir a pendência de baixa do pedido de devolução.
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que o pedido de devolução já está gravado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.descancelaSaldo();
novoPedidoDevol.grava();
excluindo um pedido de devolução
Para excluir um pedido de devolução já gravado anteriormente, deve ser instanciado o OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que será excluído>);
Para excluir um pedido de devolução, deve ser manipulada a api de dataset pedido, executando o método empty do dataset que irá excluir todos os itens do pedido de devolução. Deve ser considerado que um pedido de devolução aprovado ou um pedido de devolução baixado não pode ser excluído.
novoPedidoDevol.pedido.empty();
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo no idbc. Vamos considerar que o pedido de devolução já está gravado.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.empty();
novoPedidoDevol.grava();
excluindo itens de um pedido de devolução
Para excluir o item de um pedido de devolução já gravado anteriormente, deve ser instanciado o OperacaoPedidoDevolucao.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novoPedidoDevol.abre(<chave de criação do pedido de devolução que terá item excluído>);
Para excluir um item do pedido de devolução, deve ser manipulada a api de dataset pedido, executando o método del do dataset onde o dataset deve estar posicionado no item que se deseja excluir.
novoPedidoDevol.pedido.findKey(<chave do item que será excluído>);
novoPedidoDevol.pedido.del();
Um pedido de devolução que já tenha sido baixado não poderá ter um item excluído.
Em seguida deve ser chamado o grava.
novoPedidoDevol.grava();
Exemplo completo no idbc.
__includeOnce(-1898188315); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoDevolucao.ijs
var novoPedidoDevol = new OperacaoPedidoDevolucao(-1899999817 /* Saídas */);
var chCriacao = <chave de criação do pedido de devolução>;
var chaveItem = <chave do item que será excluído>;
novoPedidoDevol.abre(chCriacao);
novoPedidoDevol.pedido.findKey(chaveItem);
novoPedidoDevol.pedido.del();
novoPedidoDevol.grava();
Para realizar a consulta de pedidos de devolução, deve-se utilizar o datasource de pedidos.
Maiores detalhes: https://sites.google.com/a/bematech.com/erp/o-que-fazemos/modulos/venda/manuais-tecnicos/datasource-de-pedido