guia técnico da transferência de depósito

introdução

Neste guia serão abordadas as funcionalidades relacionadas a Operação de Transferência de Depósito, 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 criação e edição de transferência de depósito.

objetivo

O objetivo deste guia é orientar como utilizar as APIs disponibilizadas para manipular uma Operação de Transferência de Depósito onde iremos explanar desde a criação, edição demais funcionalidades de uma transferência de depósito.

Considerando-se a complexidade de um ERP, não serão descritos nesse guia termos introdutórios do sistema.

pré-requisitos

Para a perfeita compreensão do uso do objetos de gestão responsável por manipular Operação de Transferência de Depósito 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.

introdução ao objeto de transferência de depósito

O objeto responsável por manipular as operações de transferência de depósitos é o OperacaoTransferenciaDeposito, localizado através do script: -1897148144. O objeto OperacaoTransferenciaDeposito é uma especialização do objeto Operacao e desta forma, tem como principais API's seus datasets. O principal dataset do objeto OperacaoTransferenciaDeposito é o "movDepos".

O dataSet "movDepos" representa os dados das movimentações de entrada e saída que serão geradas após a gravação da transferência de depósito. Essas informações serão persistidas na tabela MOVDEPOS.

Os principais métodos públicos do objeto OperacaoTransferenciaDeposito são: nova, grava, abre e o buscaPendencia. Esses métodos serão detalhados à seguir.

utilizando o objeto OperacaoTransferenciaDeposito

Para uma melhor visão de como utilizar o OperacaoTransferenciaDeposito abaixo serão listados os principais casos de uso e a explicação de quais as APIs devem ser utilizadas.

instanciando o OperacaoTransferenciaDeposito

configurando instância

Ao realizar a instância do OperacaoTransferenciaDeposito não será necessário passar parâmetros adicionais, à partir da instância o objeto estará pronto para realizar uma transferência de depósito.

Exemplo de idbc realizando a instância do OperacaoTransferenciaDeposito

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

aproveitando instância da transferência

Conforme explicado no guia técnico das operações para maior performance é possível aproveitar a instância do OperacaoTransferenciaDeposito e realizar várias operações sem a necessidade de reinstanciar o OperacaoTransferenciaDeposito. Ou seja, é possível instanciar somente uma vez o OperacaoTransferenciaDeposito e criar, abrir, editar uma operação após a outra. Para isto faremos uso dos métodos "nova" e "fecha", conforme explicado o passo a passo abaixo:

Ao instanciar um OperacaoTransferenciaDeposito para criação de uma nova transferência, conforme descrito em criar uma nova transferência com dados informados, utilizamos o método nova() em seguida populamos o dataset movDepos e gravamos utilizando o método grava.

Abaixo temos o código completo para criar uma nova transferência, com 1 movimentação de saída e 1 movimentação de entrada.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.nova();

var hoje = new Date();

var hora = hoje.toString("hh:mm:ss");

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

Caso seja necessário criar uma nova transferência não se faz necessário instanciar outra vez o OperacaoTransferenciaDeposito, 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 da primeira transferência.

opTransfDeposito.fecha();

Após fechar caso queria criar uma segunda transferência basta chamar o método nova.

opTransfDeposito.nova();

Em seguida deve ser populado as informações das movimentações de saída e entrada.

Para inserir as informações das movimentações, deve ser manipulada a api de dataset movDepos, executando o método append do dataset e preenchendo as informações de saída, em seguida executando o método post do dataset. Deve ser executado novamente o método append do dataset para possibilitar informar os dados de entrada, finalizando novamente com a execução do método post do dataset:

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

Em seguida deve ser chamado o grava:

opTransfDeposito.grava();

Exemplo completo no idbc criando duas transferências de depósitos com a mesma instância do OperacaoTransferenciaDeposito. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.nova();

var hoje = new Date();

var hora = hoje.toString("hh:mm:ss");

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

opTransfDeposito.fecha();

opTransfDeposito.nova();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = -10;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = 10;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

criando transferências

criar uma nova transferência com dados informados

Para realizar a criação de uma Transferência de Depósito devemos iniciar instanciando o OperacaoTransferenciaDeposito.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

Em seguida deve ser utilizado o método "nova" conforme api da Operacao.

opTransfDeposito.nova();

Em seguida deve ser populado as informações das movimentações de saída e entrada.

Para inserir as informações das movimentações, deve ser manipulada a api de dataset movDepos, executando o método append do dataset e preenchendo as informações de saída, em seguida executando o método post do dataset. Deve ser executado novamente o método append do dataset para possibilitar informar os dados de entrada, finalizando novamente com a execução do método post do dataset:

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

Observação: Os passos acima de popular a movimentação de saída e entrada não é necessário ao desenvolver interfaces com o WebFramework, o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de movimentações de depósitos terem como referência o dataset (movDepos) do objeto.

Em seguida deve ser chamado o grava:

opTransfDeposito.grava();

Exemplo completo no idbc. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.nova();

var hoje = new Date();

var hora = hoje.toString("hh:mm:ss");

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

criar uma nova transferência com mais de uma entrada e saída

Para realizar a criação de uma Transferência de Depósito devemos iniciar instanciando o OperacaoTransferenciaDeposito.

Em seguida deve ser utilizado o método "nova" conforme api da Operacao.

opTransfDeposito.nova();

Em seguida deve ser populado as informações das movimentações de saída e entrada.

Para inserir as informações das movimentações, deve ser manipulada a api de dataset movDepos, executando o método append do dataset e preenchendo as informações de saída, em seguida executando o método post do dataset, este passo será executado tantas vezes quantas forem as movimentações de saída.

Ao inserir todos os dados de movimentações de saída, deve ser executado novamente o método append do dataset para possibilitar informar os dados de entrada, finalizando novamente com a execução do método post do dataset, novamente, estes passos serão executados tantas vezes quantas forem as movimentações de entrada.

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = -10;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = 10;

opTransfDeposito.movDepos.post();

Observação: Os passos acima de popular a movimentação de saída e de entrada não é necessário ao desenvolver interfaces com o WebFramework, o tratamento de manipulação de dataset é realizado pelo próprio Framework, bastando a grade de movimentações de depositos terem como referência o dataset (movDepos) do objeto.

Em seguida deve ser chamado o grava:

opTransfDeposito.grava();

Exemplo completo no idbc. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.nova();

var hoje = new Date();

var hora = hoje.toString("hh:mm:ss");

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = -1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 185842; /* Papel A4 */

opTransfDeposito.movDepos.quantidade = 1;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 285302; /* UNUM ALMOX */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = -10;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.append();

opTransfDeposito.movDepos.classe = -2008878000; /* Movimentação de depósitos */

opTransfDeposito.movDepos.movimentac = hoje;

opTransfDeposito.movDepos.movimentach = hora;

opTransfDeposito.movDepos.deposito = 19712096 /* Deposito Teste */

opTransfDeposito.movDepos.recurso = 38965224; /* Água */

opTransfDeposito.movDepos.quantidade = 10;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

abrindo e alterando

A abertura de transferência de depósito pode ser realizada através dos métodos abre() e buscaPendencia() do objeto OperacaoTransferenciaDeposito. A diferença entre eles está apenas na passagem dos parâmetros que serão detalhadas à seguir.

O método abre() possibilita que seja informado como parâmetro a chave de umas das movimentações geradas ou a chave de criação da transferência de depósito que deseja abrir. O formato dessa chave deve ser do tipo "number", conforme exemplo abaixo:

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.abre(385548725);

Caso seja informada uma chave que não existe na base de dados, o sistema apresentará uma mensagem de validação indicando que não foi encontrada esta transferência de depósito.

O método buscaPendencia() possibilita que seja informado como parâmetro uma clausula where SQL no formato "string" que será aplicada como filtro na tabela MOVDEPOS para retornar as movimentações das transferências que atendam os filtros informados. Segue exemplo:

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.buscaPendencia("CHCRIACAO = 123456789");

Os dois métodos supracitados ao serem executados com sucesso irão popular a propriedade "movDepos" da instância do objeto OperacaoTransferenciaDeposito. Não haverá retorno na execução deles.

abrindo transferência e alterando dados

Para realizar a edição de dados de uma nova Transferência de Depoósito já gravada anteriormente, deve ser instanciado o OperacaoTransferenciaDeposito e deve ser utilizado o método abre() ou buscaPendencia() do objeto Operacao passando a chave de criação da operação ou a chave de qualquer uma das movimentações de depósitos criadas.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.abre(385548725);

Em seguida os dados das movimentações podem ser acessados e editados pelo dataset movDepos, no exemplo citado é utilizado o método first da api dataset para posicionar na primeira movimentação, em seguida é alterada a quantidade e realizado o método post e o método next da api dataset posicionando na segunda movimentação, onde finalmente, é feita a alteração na quantidade, sendo utilizado o método post da api dataset para confirmar as alteração.

opTransfDeposito.movDepos.first();

opTransfDeposito.movDepos.quantidade = -10;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.next();

opTransfDeposito.movDepos.quantidade = 10;

opTransfDeposito.movDepos.post();

Exemplo completo no idbc. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.abre(385548725);

opTransfDeposito.movDepos.first();

opTransfDeposito.movDepos.quantidade = -10;

opTransfDeposito.movDepos.post();

opTransfDeposito.movDepos.next();

opTransfDeposito.movDepos.quantidade = 10;

opTransfDeposito.movDepos.post();

opTransfDeposito.grava();

exclusão transferência de depósito

A remoção de uma transferência de depósito é realizada através da exclusão dos registros da propriedade "movDepos" do objeto OperacaoTransferenciaDeposito, conforme exemplo abaixo:

opTransfDeposito.movDepos.empty()

A efetivação dessa exclusão é realizada através da gravação da operação após o procedimento acima.

__includeOnce (-1897148144); // /products/INTEQerp infrastructure/library/recursos/objects/Estoque/OperacaoTransferenciaDeposito.ijs

var opTransfDeposito = new OperacaoTransferenciaDeposito();

opTransfDeposito.abre(385548725);

opTransfDeposito.movDepos.empty();

opTransfDeposito.grava();

tópicos avançados