Neste guia serão abordadas as funcionalidades relacionadas a Operação de Baixa de Pedido, 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 baixa de pedidos.
O objetivo deste guia é orientar como utilizar as APIs disponibilizadas para manipular uma Operação de Baixa de Pedido, onde iremos explanar desde a criação de uma baixa de pedido, edição, até funcionalidades como cancelamento, 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 de Baixa de Pedido, 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 Baixa de Pedido é o OperacaoPedidoBaixaPedido. O OperacaoPedidoBaixaPedido é uma especialização do objeto OperacaoPedidoBaixaAutomatica e desta forma, tem como principais API's seus datasets. Lembrando que como a diferenciação entre uma baixa de pedido de Compras, Vendas, etc é a classe de operação, o objeto OperacaoPedidoBaixaPedido é utilizado para manipular qualquer baixa de pedido independente desta classe.
Antes de conhecermos os conceitos e as APIs do objeto de gestão OperacaoPedidoBaixaPedido, precisamos entender a base para geração destes dataset que é o modelo de dados do pedido. Para cada item de pedido baixado é gerado um novo registro na tabela PEDIDO que é uma cópia do item baixado. A relação entre o pedido e a baixa é o campo CHPEDBAIXA gravado nos registros que representam a baixa de pedido. Este campo contém a chave do item de pedido baixado.
Em seguida, devemos conhecer a API do OperacaoPedidoBaixaPedido, que é uma especialização da OperacaoPedidoBaixaAutomatica (que é uma especialização do OperacaoPedido). Deve ser realizada a leitura do seguinte manual que explica as principais API's do OperacaoPedido: datasets do operacaoPedido. Além disso, o OperacaoPedidoBaixaPedido possui o dataset pedidoBaixado com os pedidos que estão sendo baixados.
Para uma melhor visão de como utilizar o OperacaoPedidoBaixaPedido, 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 OperacaoPedidoBaixaPedido 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 na baixa de 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 */.
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(<informar a chave da classe de configuração do Pedido>);
Exemplo de idbc realizando a instância do OperacaoPedidoBaixaPedido utilizando a classe de configuração de Entradas. Assim como a classe Entradas, também podem ser utilizadas quaisquer classes de pedido que seja exibida no processo Configuração de Campos do Pedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
aproveitando a instância da baixa de pedido
Conforme explicado no guia técnico das operações, para maior performance, é possível aproveitar a instância do OperacaoPedidoBaixaPedido e realizar várias operações sem a necessidade de reinstanciar o OperacaoPedidoBaixaPedido. Ou seja, é possível instanciar somente uma vez o OperacaoPedidoBaixaPedido e criar, abrir, editar uma operação após a outra. Para isto faremos uso dos métodos "buscaPendencia" e "fecha", conforme explicado no passo a passo abaixo:
Ao instanciar um OperacaoPedidoBaixaPedido para a criação de uma nova baixa de pedido, conforme descrito em criar baixa total de um pedido, utilizamos o método buscaPendencia(), em seguida atualizamos os datasets pedido e pedidoCab e gravamos utilizando o método grava.
Abaixo temos o código completo para realizar a baixa de um pedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var chCriacaoPedido = <informe aqui a chave de criação do pedido que será baixado>
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido);
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.pedidoCab.numero = <informe aqui o número da baixa>;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date(); //<data de movimentação do estoque, no nosso exemplo, hoje>
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
Caso seja necessário criar uma nova baixa de pedido, não se faz necessário instanciar outra vez o OperacaoPedidoBaixaPedido, 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.
novaBaixaPedido.fecha();
Após fechar caso queira realizar uma nova baixa de pedido, basta chamar o método buscaPendencia.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho da baixa de pedido, 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.
novaBaixaPedido.pedidoCab.numero = <informe aqui o número da baixa de pedido>
novaBaixaPedido.pedidoCab.post();
Para informar a data e hora em que ocorreu a movimentação de estoque dos itens da baixa, deve ser manipulada a api de dataset de pedido, preenchendo as informações abaixo.
Observação: O preenchimento da movimentac e movimentach não é obrigatório, pois o objeto de gestão sugere a data em que está sendo realizada a baixa, ou seja, hoje. No entanto, se a base estiver configurada para trabalhar com análise de divergência, ou estiver configurada para realizar conferência e não tiver ocorrido a contagem dos recursos ao dar entrada da nota do fornecedor no sistema, os campos movimentac e movimentach serão apagados. Deste modo, os exemplos utilizados neste guia, ao tratar de baixa de pedido, sempre preencherão os campos movimentac e movimentach.
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Em seguida deve ser chamado o grava:
novaBaixaPedido.grava();
Exemplo completo no idbc criando duas baixas de pedido com a mesma instância do OperacaPedidoBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
//Primeira baixa de pedido
var chCriacaoPedido1 = <chave de criação do primeiro pedido que será baixado>;
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido1);
novaBaixaPedido.pedidoCab.numero = <número da baixa de pedido>
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
novaBaixaPedido.fecha();
//Segunda baixa de pedido
var chCriacaoPedido2 = <chave de criação do segundo pedido que será baixado>;
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido2);
novaBaixaPedido.pedidoCab.numero = <número da baixa de pedido>
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
buscando pendência utilizando condição sql
Para inserir pedidos pendentes em uma operação de baixa de pedidos é necessário o uso do método buscaPendencia.
Este método recebe como parâmetro uma condição sql que permita identificar o pedido 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 um pedido.
Exemplos no idbc da busca de pendência utilizando condição sql. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
//Exemplo 1:
//Buscando pedido pendente que possui item com chave 123456
var novaBaixaPedido = new OperacaoPedidoBaixaPedido();
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.buscaPendencia("CHAVE = 123456");
//Exemplo 2:
//Buscando pedido pendente com chave de criação 123455
var novaBaixaPedido = new OperacaoPedidoBaixaPedido();
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.buscaPendencia("CHCRIACAO = 123455");
//Exemplo 3:
//Buscando pedidos pendentes da pessoa "Fornecedor 1", onde a programação de entrega é o dia "17/05/2015"
var novaBaixaPedido = new OperacaoPedidoBaixaPedido();
novaBaixaPedido.fechaOperacaoNoTerminoDaGravacao = false;
novaBaixaPedido.buscaPendencia("PESSOA = 987654321 /* Fornecedor 1 */ and PROGRAMACA = '05/17/2015'");
Além de uma condição sql, caso exista um dataset de pedidos pendentes de baixa disponível, e não seja necessário realizar uma nova consulta, este dataset poderá ser passado como parâmetro para o método buscaPendencia().
Neste caso todos os pedidos que estiverem no dataset e forem pendentes serão adicionados à operação de baixa de pedido.
API buscaPendencia informando um dataset:
novaBaixaPedido.buscaPendencia(dataSet);
criar baixa total de um pedido
Para realizar a criação de uma nova baixa de pedido, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao; /*aqui deve ser informado o número da baixa, que em operações de entrada deve ser o número da nota emitida pelo fornecedor. No exemplo, estamos utilizando a chave de criação da baixa. */
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido e preenchendo as informações:
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que o pedido que será baixado já está criado e que possui apenas um item.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacaoPedido = <chave de criação do pedido que será baixado>;
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var movimentacao = new Date();
novaBaixaPedido.pedido.movimentac = movimentacao;
novaBaixaPedido.pedido.movimentach = movimentacao.toString("hh:nn:ss");
novaBaixaPedido.pedido.post();
novaBaixaPedido.grava();
criar baixa parcial (quantidade) de um pedido
Para realizar a criação de uma nova baixa de pedido, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que se deseja baixar>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que o pedido que será baixado parcialmente possui apenas 1 item com quantidade 5. Realizaremos a baixa de apenas 2 quantidades deste item.
var movimentacao = new Date();
novaBaixaPedido.pedido.quantidade = 2;
novaBaixaPedido.pedido.movimentac = movimentacao;
novaBaixaPedido.pedido.movimentach = movimentacao.toString("hh:nn:ss");
novaBaixaPedido.pedido.post();
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que o pedido, que será baixado parcialmente, já está criado e que possui apenas um item com quantidade 5. Realizaremos a baixa de apenas 2 quantidades deste item.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacaoPedido = <chave de criação do pedido que deseja baixar>;
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var movimentacao = new Date();
novaBaixaPedido.pedido.quantidade = 2;
novaBaixaPedido.pedido.movimentac = movimentacao;
novaBaixaPedido.pedido.movimentach = movimentacao.toString("hh:nn:ss");
novaBaixaPedido.pedido.post();
novaBaixaPedido.grava();
criar baixa parcial (item) de um pedido
Para realizar a criação de uma nova baixa de pedido, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado parcialmente>);
ou
novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do item do pedido que será baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que o pedido que será baixado parcialmente possui 2 itens e que cada item possui 1 quantidade. Realizaremos a baixa de apenas 1 item.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada, dependendo de como a busca de pendência foi realizada */
//1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
//novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado parcialmente>);
var baixa = novaBaixaPedido.pedido;
baixa.last();
baixa.del();
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
ou
//2. Buscou pendência passando a chave do item do pedido que será baixado
//novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do item do pedido que será baixado>);
var baixa = novaBaixaPedido.pedido;
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que o pedido que será baixado parcialmente já está criado, possui 2 itens e cada item com 1 quantidade. Realizaremos a baixa de apenas 1 item.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
//modo 1. Buscou pendência passando a chave de criação do pedido que deseja baixar parcialmente
var chCriacaoPedido = <chave de criação do pedido que será baixado parcialmente>
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.last();
baixa.del();
baixa.first();
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
novaBaixaPedido.grava();
ou
//modo 2. Buscou pendência passando a chave do item do pedido que deseja baixar
var chaveItem1 = <chave do item de pedido que será baixado>
novaBaixaPedido.buscaPendencia("CHAVE = " + chaveItem1);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
novaBaixaPedido.grava();
criar baixa parcial (quantidade e item) de um pedido
Para realizar a criação de uma nova baixa de pedido, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado parcialmente>);
ou
novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do item do pedido que será baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que o pedido que será baixado parcialmente possui 3 itens e que cada item com 5 quantidades. Realizaremos a baixa de todas as quantidades de 1 item e 2 quantidades de outro item. O terceiro item do pedido não será baixado.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada, dependendo de como a busca de pendência foi realizada */
//1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
//novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <chave de criação do pedido que será baixado parcialmente>);
var baixa = novaBaixaPedido.pedido;
baixa.last();
baixa.del();
baixa.first();
baixa.quantidade = 2;
baixa.post();
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
ou
//2. Buscou pendência passando a chave dos itens do pedido que será baixado
//novaBaixaPedido.buscaPendencia("CHAVE in (" + <array de chaves dos itens de pedido que serão baixados> + ")");
var baixa = novaBaixaPedido.pedido;
baixa.first();
baixa.quantidade = 2;
baixa.post();
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que o pedido que será baixado parcialmente já está criado, 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 do pedido não será baixado.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
//modo 1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
var chCriacaoPedido = <chave de criação do pedido que será baixado parcialmente>
var chaveItem1 = <chave do item de pedido que terá apenas 2 quantidades baixadas>
var chaveItem3 = <chave do item de pedido que não será baixado>
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + chCriacaoPedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(chaveItem3)) {
baixa.del();
}
if (baixa.find(chaveItem1)) {
baixa.quantidade = 2;
baixa.post();
}
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
ou
//modo 2. Buscou pendência passando a chave do item do pedido que deseja baixar
var chaveItem1 = <chave do item de pedido que terá apenas 2 quantidades baixadas>
var chaveItem2 = <chave do item de pedido que será baixado totalmente>
novaBaixaPedido.buscaPendencia("CHAVE in (" + [chaveItem1, chaveItem2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(chaveItem1)) {
baixa.quantidade = 2;
baixa.post();
}
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
criar baixa total de múltiplos pedidos
Para realizar a criação de uma nova baixa de múltiplos pedidos, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido preenchendo as informações:
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que os pedidos, que serão baixados juntos, já estão criados e que cada pedido possui apenas um item.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
//realiza a baixa total dos pedidos
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacaoPedido1 = <chave de criação do primeiro pedido que será baixado>;
var chCriacaoPedido2 = <chave de criação do segundo pedido que será baixado>;
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + [chCriacaoPedido1, chCriacaoPedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
criar baixa parcial (quantidade) de múltiplos pedidos
Para realizar a criação de uma nova baixa parcial de múltiplos pedidos, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados 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, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que os pedidos que serão baixados parcialmente possuem (cada um deles) apenas 1 item com quantidade 5. Realizaremos a baixa de apenas 2 quantidades do item de cada pedido.
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.quantidade = 2;
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que os pedidos que serão baixados parcialmente já estão criados e que possuem (cada um deles) apenas 1 item com quantidade 5. Realizaremos a baixa de apenas 2 quantidades do item de cada pedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacaoPedido1 = <chave de criação do primeiro pedido que será baixado parcialmente>;
var chCriacaoPedido2 = <chave de criação do segundo pedido que será baixado parcialmente>;
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + [chCriacaoPedido1, chCriacaoPedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.quantidade = 2;
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
criar baixa parcial (item) de múltiplos pedidos
Para realizar a criação de uma nova baixa parcial de múltiplos pedidos, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados parcialmente> + ")");
ou
novaBaixaPedido.buscaPendencia("CHAVE in (" + <array de chaves dos itens dos pedidos que serão baixados> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que os pedidos que serão baixados parcialmente possuem 2 itens e que cada item possui 1 quantidade. Realizaremos a baixa parcial de apenas 1 item de cada pedido.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada, dependendo de como a busca de pendência foi realizada */
//1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
//novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados parcialmente> + ")");
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(<chave do item do primeiro pedido que não será baixado>)) {
baixa.del();
}
if (baixa.find(<chave do item do segundo pedido que não será baixado>)) {
baixa.del();
}
for (baixa.first(); !baixa.eof(); baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
ou
//2. Buscou pendência passando as chaves dos itens dos pedidos que serão baixados
//novaBaixaPedido.buscaPendencia("CHAVE in (" + <array de chaves dos itens dos pedidos que serão baixados> + ")");
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof(); baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que os pedidos que serão baixados juntos já estão criados, cada pedido possui 2 itens com 1 quantidade. Realizaremos a baixa parcial de apenas 1 item de cada pedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
//modo 1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
var chCriacaoPedido1 = <chave de criação do primeiro pedido que será baixado parcialmente>;
var chCriacaoPedido2 = <chave de criação do segundo pedido que será baixado parcialmente>;
var chaveItem2Pedido1 = <chave do segundo item do primeiro pedido que será baixado parcialmente. Este item não será baixado>
var chaveItem2Pedido2 = <chave do segundo item do segundo pedido que será baixado parcialmente. Este item não será baixado.>
novaBaixaPedido.buscaPendenciav("CHCRIACAO in (" + [chCriacaoPedido1, chCriacaoPedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(chaveItem2Pedido1)) {
baixa.del();
}
if (baixa.find(chaveItem2Pedido2)) {
baixa.del();
}
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
ou
//modo 2. Buscou pendência passando a chave do item do pedido que deseja baixar
var chaveItem1Pedido1 = <chave do primeiro item do primeiro pedido que será baixado parcialmente>
var chaveItem1Pedido2 = <chave do primeiro item do segundo pedido que será baixado parcialmente>
novaBaixaPedido.buscaPendencia("CHAVE in (" + [chaveItem1Pedido1, chaveItem1Pedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
criar baixa parcial (quantidade e item) de múltiplos pedidos.
Para realizar a criação de uma nova baixa parcial de múltiplos pedidos, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados parcialmente> + ")");
ou
novaBaixaPedido.buscaPendencia("CHAVE in (" + <array de chaves dos itens dos pedidos que serão baixados> + ")");
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido. Consideraremos que os pedidos que serão baixados parcialmente possuem (cada um) 3 itens e cada item com 5 quantidades. Realizaremos a baixa de todas as quantidades de 1 item e 2 quantidades de outro item em cada pedido. O terceiro item de cada pedido não será baixado.
/* Abaixo o detalhamento de como a api de dataset pedido deve ser manipulada, dependendo de como a busca de pendência foi realizada */
//1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
//novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + <array de chaves de criação dos pedidos que serão baixados parcialmente> + ")");
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
baixa.first();
while(!baixa.eof) {
if (baixa.find(<chave do segundo item do primeiro pedido>) ||
baixa.find(<chave do segundo item do segundo pedido>)) {
baixa.quantidade = 2;
baixa.post();
baixa.next();
} else if (baixa.find(<chave do terceiro item do primeiro pedido>) ||
baixa.find(<chave do terceiro item do segundo pedido>)) {
baixa.del();
}
}
for (baixa.first(); !baixa.eof(); baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
ou
//2. Buscou pendência passando as chaves dos itens dos pedidos que serão baixados
//novaBaixaPedido.buscaPendencia("CHAVE in (" + <array de chaves dos itens dos pedidos que serão baixados> + ")");
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(<chave do segundo item do primeiro pedido>) {
baixa.quantidade = 2;
baixa.post();
}
if (baixa.find(<chave do segundo item do segundo pedido>) {
baixa.quantidade = 2;
baixa.post();
}
for (baixa.first(); ! baixa.eof(); baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a baixa parcial e a total é o indicativo da quantidade e/ou itens que serão baixados.
Exemplo no idbc. Vamos considerar que os pedidos que serão baixados parcialmente possuem (cada um) 3 itens e cada item com 5 quantidades. Realizaremos a baixa de todas as quantidades de 1 item e 2 quantidades de outro item em cada pedido. O terceiro item de cada pedido não será baixado.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
//modo 1. Buscou pendência passando a chave de criação do pedido que será baixado parcialmente
var chCriacaoPedido1 = <chave de criação do primeiro pedido que será baixado parcialmente>
var chCriacaoPedido2 = <chave de criação do segundo pedido que será baixado parcialmente>
var chaveItem2Pedido1 = <chave do segundo item do primeiro pedido que será baixado parcialmente.>
var chaveItem2Pedido2 = <chave do segundo item do segundo pedido que será baixado parcialmente.>
var chaveItem3Pedido1 = <chave do segundo item do primeiro pedido que será baixado parcialmente. Este item não será baixado>
var chaveItem3Pedido2 = <chave do segundo item do segundo pedido que será baixado parcialmente. Este item não será baixado.>
novaBaixaPedido.buscaPendencia("CHCRIACAO in (" + [chCriacaoPedido1, chCriacaoPedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
baixa.first();
while(!baixa.eof) {
if (baixa.find(chaveItem2Pedido1) || baixa.find(chaveItem2Pedido2)) {
baixa.quantidade = 2;
baixa.post();
baixa.next();
} else if (baixa.find(chaveItem3Pedido1) || baixa.find(chaveItem3Pedido2)) {
baixa.del();
}
}
for (baixa.first(); !baixa.eof(); baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
ou
//modo 2. Buscou pendência passando a chave do item do pedido que deseja baixar
var chaveItem1Pedido1 = <chave do primeiro item do primeiro pedido que será baixado parcialmente. Este item não será baixado>
var chaveItem2Pedido1 = <chave do segundo item do primeiro pedido que será baixado parcialmente. Este item não será baixado>
var chaveItem1Pedido2 = <chave do primeiro item do segundo pedido que será baixado parcialmente. Este item não será baixado.>
var chaveItem2Pedido2 = <chave do segundo item do segundo pedido que será baixado parcialmente. Este item não será baixado.>
novaBaixaPedido.buscaPendencia("CHAVE in (" + [chaveItem1Pedido1, chaveItem2Pedido1, chaveItem1Pedido2, chaveItem2Pedido2] + ")");
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
baixa.first();
while(!baixa.eof) {
if (baixa.find(chaveItem2Pedido1) || baixa.find(chaveItem2Pedido2)) {
baixa.quantidade = 2;
baixa.post();
baixa.next();
}
}
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
criar baixa de pedido incluindo novas pendências nesta baixa
Para realizar a criação de uma nova baixa de pedido incluindo novas pendências, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do item do pedido que será baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido.
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); ! baixa.eof; baixa.next()) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Após ter incluído um ou mais itens na baixa, é possível buscar pendência novamente para incluir mais itens. Para isso, basta utilizar novamente o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do outro item de pedido que será baixado>);
Em seguida deve ser atualizada a informação do novo item inserido.
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(<chave do outro item de pedido que será baixado>)) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que o pedido que será baixado já está criado e possui 2 itens. No exemplo abaixo buscaremos pendência inserindo um item de cada vez.
Observação: O exemplo abaixo foi feito considerando pesquisa de itens de um mesmo pedido, no entanto, o mesmo pode ser feito com pedidos diferentes ou com itens de pedidos diferentes.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chaveItem1Pedido = <chave do primeiro item do pedido que será baixado.>
var chaveItem2Pedido = <chave do segundo item do pedido que será baixado.>
novaBaixaPedido.buscaPendencia("CHAVE = " + chaveItem1Pedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
var movimentacao = new Date();
baixa.movimentac = movimentacao
baixa.movimentach = movimentacao.toString("hh:nn:ss");
baixa.post();
//Observação: o cálculo da baixa não é obrigatório para a realização de busca de novas pendências.
novaBaixaPedido.calcula();
novaBaixaPedido.buscaPendencia("CHAVE = " + chaveItem2Pedido);
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(chaveItem2Pedido)) {
baixa.movimentac = movimentacao
baixa.movimentach = movimentacao.toString("hh:nn:ss");
}
novaBaixaPedido.grava();
criar pré-baixa de pedido
Para realizar a criação de uma pré-baixa de pedido, devemos iniciar instanciando o OperacaoPedidoBaixaPedido passando a classe mãe das classes de pedido que iremos utilizar. Ou seja, se iremos realizar pedido de Compras p Consumo, Compras p Consumo ST, etc, devemos instanciar o OperacaoPedidoBaixaPedido passando a classe Entradas.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHCRIACAO = " + <Chave de criação do pedido que será pré-baixado>);
Em seguida devem ser atualizadas as informações de cabeçalho e de item.
Para atualizar as informações do cabeçalho do pedido, 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.
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
Para inserir as informações de item da baixa, deve ser manipulada a api de dataset pedido.
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(<chave do outro item de pedido que será baixado>)) {
baixa.movimentac = null;
baixa.movimentach = null;
baixa.post();
}
Observação: Os passos acima de atualizar tanto o cabeçalho quando o item 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:
novaBaixaPedido.grava();
A diferença entre a pré-baixa e a baixa de pedido é que na pré-baixa não há a movimentação de estoque. Esta diferença é representada pela ausência da data e hora de movimentação, ou seja, campos movimentac e movimentach, do pedido, nulos.
Deste modo, também é possível realizar pré-baixa total de um pedido, pré-baixa parcial (quantidade) de um pedido, pré-baixa parcial (item) de um pedido, pré-baixa parcial (quantidade e item) de um pedido, pré-baixa total de múltiplos pedidos, pré-baixa parcial (quantidade) de múltiplos pedidos, pré-baixa parcial (item) de múltiplos pedidos, pré-baixa parcial (quantidade e item) de múltiplos pedidos, criar pré-baixas de pedido incluindo novas pendências. A diferença do que está detalhado nos links é que os campos movimentac e movimentach do pedido, devem ficar nulos.
Exemplo no idbc. Vamos considerar que o pedido que será pré-baixado já está criado.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chaveItem1Pedido = <chave do primeiro item do pedido que será baixado.>
var chaveItem2Pedido = <chave do segundo item do pedido que será baixado.>
novaBaixaPedido.buscaPendencia("CHAVE = " + chaveItem1Pedido);
novaBaixaPedido.pedidoCab.numero = novaBaixaPedido.pedidoCab.chcriacao;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.movimentac = null;
baixa.movimentach = null;
baixa.post();
}
novaBaixaPedido.grava();
abrindo baixa de pedido e alterando dados
Para realizar a edição de dados de uma baixa de pedido, já gravada anteriormente, deve ser instanciado o OperacaoPedidoBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaBaixaPedido.abre(<chave de criação da baixa que será aberta>);
Em seguida os dados do cabeçalho podem ser acessados e editados pelo dataset pedidoCab.
novaBaixaPedido.pedidoCab.numero = 123456;
novaBaixaPedido.pedidoCab.post();
Os dados dos itens podem acessados e editados pelo dataset pedido.
novaBaixaPedido.pedido.quantidade = 1;
novaBaixaPedido.pedido.post();
Caso precise alterar mais de um item do pedido o dataset pedido pode ser percorrido para edição.
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next() ){
baixa.quantidade = 1;
baixa.post();
}
Em seguida deve ser chamado o grava.
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que pedido e baixa já estão gravados e que a baixa de pedido que será editada possui 2 itens, onde cada item tem quantidade 2. Iremos alterá-la para baixar apenas 1 quantidade de cada item.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacao = <chave de criação da baixa que será aberta.>
novaBaixaPedido.abre(chCriacao);
novaBaixaPedido.pedidoCab.numero = 123456;
novaBaixaPedido.pedidoCab.post();
var baixa = novaBaixaPedido.pedido;
for (baixa.first(); !baixa.eof; baixa.next()) {
baixa.quantidade = 1;
baixa.post();
}
novaBaixaPedido.grava();
abrindo baixa de pedido e incluindo nova pendência.
Para inserir novos itens em uma baixa de pedido, já gravada anteriormente, deve ser instanciado o OperacaoPedidoBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaBaixaPedido.abre(<chave de criação da baixa que será aberta>);
Em seguida deve ser utilizado o método "buscaPendencia" conforme api da Operacao.
novaBaixaPedido.buscaPendencia("CHAVE = " + <chave do item do pedido que será baixado>);
Em seguida deve ser chamado o grava.
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que pedido e baixa já estão gravados e o pedido gravado possui dois itens, cada um com uma quantidade, mas a baixa foi parcial.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacao = <chave de criação da baixa que será aberta.>
var chaveItem = <chave do item do pedido que será baixado>
novaBaixaPedido.abre(chCriacao);
novaBaixaPedido.buscaPendencia("CHAVE = " + chaveItem);
var baixa = novaBaixaPedido.pedido;
baixa.indexFieldNames = "CHPEDBAIXA";
if (baixa.find(chaveItem)) {
baixa.movimentac = new Date();
baixa.movimentach = baixa.movimentac.toString("hh:nn:ss");
baixa.post();
}
novaBaixaPedido.grava();
cancelando uma baixa de pedido
Para cancelar uma baixa de pedido já gravada anteriormente, deve ser instanciado o OperacaoPedidoBaixaBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaBaixaPedido.abre(<chave de criação da baixa que será cancelada>);
Em seguida realizar o cancelamento da baixa utilizando o método cancela(). Considerar que não é possível cancelar uma baixa de pedido que tenha sido devolivida.
novaBaixaPedido.cancela();
Em seguida deve ser chamado o grava. Deve ser considerado que, caso tenha sido emitida uma nota fiscal pelo sistema, a nota será cancelada na Sefaz ao gravar uma baixa de pedido cancelada.
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que a baixa de pedido já está gravada.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacao = <chave de criação da baixa que será cancelada.>
novaBaixaPedido.abre(chCriacao);
novaBaixaPedido.cancela();
novaBaixaPedido.grava();
excluindo uma baixa de pedido
Para excluir uma baixa de pedido já gravada anteriormente, deve ser instanciado o OperacaoPedidoBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaBaixaPedido.abre(<chave de criação da baixa que será excluída>);
Para excluir uma baixa de pedido, deve ser manipulada a api de dataset pedido, executando o método empty do dataset que irá excluir todos os itens da baixa de pedido.
novaBaixaPedido.pedido.empty();
Em seguida deve ser chamado o grava. Deve ser considerado que uma baixa de pedido que teve nota fiscal emitida pelo sistema, não poderá ser excluída.
novaBaixaPedido.grava();
Exemplo no idbc. Vamos considerar que a baixa de pedido já está gravada.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacao = <chave de criação da baixa que será excluída>
novaBaixaPedido.abre(chCriacao);
novaBaixaPedido.pedido.empty();
novaBaixaPedido.grava();
excluindo item de uma baixa de pedido
Para excluir um item de uma baixa de pedido já gravada anteriormente, deve ser instanciado o OperacaoPedidoBaixaPedido.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaBaixaPedido.abre(<chave de criação da baixa que terá o item excluído>);
Para excluir um item de uma baixa de pedido, 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.
novaBaixaPedido.pedido.findKey(<chave do item que será excluído>);
novaBaixaPedido.pedido.del();
Em seguida deve ser chamado o grava. Deve ser considerado que uma baixa de pedido que teve nota fiscal emitida pelo sistema, não poderá ter item excluído.
novaBaixaPedido.grava();
Exemplo completo no idbc.
__includeOnce(-1898188310); // /products/INTEQerp infrastructure/library/pedido/objects/OperacaoPedidoBaixaPedido.ijs
var novaBaixaPedido = new OperacaoPedidoBaixaPedido(-1899999819 /* Entradas */);
var chCriacao = <chave de criação da baixa que será excluída>
var chaveItem = <chave do item que será excluído>
novaBaixaPedido.abre(123456);
novaBaixaPedido.pedido.findKey(123457);
novaBaixaPedido.pedido.del();
novaBaixaPedido.grava();
Para realizar a consulta de baixas de pedido, deve-se utilizar o datasource de baixas.
Maiores detalhes: http://erp.bematech.com/o-que-fazemos/modulos/venda/manuais-tecnicos/datasource-de-baixa-de-pedido