Neste guia serão abordadas as funcionalidades relacionadas a Operação de Devolução de Título, 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 devolução de título.
O objetivo deste guia é orientar como utilizar as APIs disponibilizadas para manipular uma Operação de Devolução de Título onde iremos explanar desde a criação de um devolução de título, edição, e as demais funcionalidades como aprovação, exclusão de um devoluçã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 objetos de gestão responsável por manipular Operação de Devolução de Título 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 devolução de título é o OperacaoTituloDevolucao. O OperacaoTituloDevolucao é uma especialização do objeto OperacaoPedidoBaixaAutomatica e desta forma, tem como principais API's seus datasets. Lembrando que a principal diferenciação entre uma devolução de título e uma operação de pedido com baixa automática é que a devolução de título não necessita ser negociada, logo, sua aprovação pode ocorrer a qualquer momento.
Uma devolução de título é uma operação de pedido com baixa automática com apenas 1 item cuja quantidade e unitário são zerados, logo, caracteriza-se como uma baixa sem saldo a ser negociado.
Antes de conhecermos os conceitos e as APIs do objeto de gestão OperacaoTituloDevolucao, precisamos entender a base para geração destes dataset que é o modelo de dados do pedido.
Em seguida, devemos conhecer a API do OperacaoTituloDevolucao que é uma especialização da Operação de Pedido com Baixa Automática.
Para uma melhor visão de como utilizar o OperacaoTituloDevolucao 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 OperacaoTituloDevolucao não será necessário passar parâmetros adicionais, à partir da instância o objeto estará pronto para realizar uma devolução de título.
var novaDevTit = new OperacaoTituloDevolucao()
Exemplo de idbc realizando a instância do OperacaoTitulo
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
aproveitando instância da devolução de título
Conforme explicado no guia técnico das operações para maior performance é possível aproveitar a instância do OperacaoTituloDevolucao e realizar várias operações sem a necessidade de reinstanciar o OperacaoTituloDevolucao. Ou seja, é possível instanciar somente uma vez o OperacaoTituloDevolucao e criar, abrir, editar uma operações após a outra. Para isto faremos uso dos métodos "nova" e "fecha", conforme explicado o passo a passo abaixo.
Ao instanciar um OperacaoTituloDevolucao para criação de uma nova devolução de título, conforme descrito em criar uma nova devolução de título, utilizamos o método nova() em seguida populamos os datasets pedido e pedidoCab, utilizamos o método estornaBaixaDeTitulo para efetivamente criar a devolução do título e gravamos utilizando o método grava.
Abaixo temos o código completo para criar uma nova devolução de título.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.fechaOperacaoNoTerminoDaGravacao = false;
novaDevTit.nova()
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 123456;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedidoCab.post();
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
novaDevTit.estornaBaixaDeTitulo(284975351)
novaDevTit.aprova()
novaDevTit.grava()
Caso seja necessário criar uma nova nova devolução não se faz necessário instanciar outra vez o OperacaoTituloDevolucao, 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.
novaDevTit.fecha();
Após fechar caso queria criar um segundo pedido basta chamar o método nova.
novaDevTit.nova();
Em seguida deve ser populado as informações de cabeçalho de itens da devolução de título.
Para popular as informações do cabeçalho da devolução de título, 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.
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 34567;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedidoCab.post();
Para inserir as informações do item da devolução de título, deve ser manipulada a api de dataset pedido, executando o método append do dataset e preenchendo as informações.
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
Em seguida deve ser chamado o método estornaBaixaDeTitulo com a chave do título que se quer estornar
novaDevTit.estornaBaixaDeTitulo(385657217)
Em seguida deve ser chamada a aprovação e a gravação
novaDevTit.aprova()
novaDevTit.grava();
Exemplo completo no idbc criando duas devoluções com a mesma instância do OperacaoTituloDevolucao. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.fechaOperacaoNoTerminoDaGravacao = false;
novaDevTit.nova()
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 123456;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedidoCab.post();
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
novaDevTit.estornaBaixaDeTitulo(284975351)
novaDevTit.aprova()
novaDevTit.grava()
novaDevTit.fecha();
novaDevTit.nova();
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 123456;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedidoCab.post();
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
novaDevTit.estornaBaixaDeTitulo(385657217)
novaDevTit.aprova()
novaDevTit.grava();
criar uma nova devolução de título com dados informados
Para realizar a criação de uma nova devolução de título devemos iniciar instanciando o OperacaoTituloDevolucao:
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
Em seguida deve ser utilizado o método "nova" conforme api da Operacao.
novaDevTit.nova();
Em seguida deve ser populado as informações de cabeçalho de itens da devolução de título.
Para popular as informações do cabeçalho, 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.
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 123456;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedidoCab.post();
Para inserir as informações do item da devolução, deve ser manipulada a api de dataset pedido, executando o método append do dataset e preenchendo as informações. No caso específica da devolução de título não deve ser informada quantidade nem o unitário.
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
Observação: Os passos acima de popular 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 método estornaBaixaDeTitulo com a chave do título que se quer estornar
novaDevTit.estornaBaixaDeTitulo(385657217)
Em seguida deve ser chamado o aprova e o grava.
novaDevTit.aprova();
novaDevTit.grava();
Exemplo completo no idbc. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.fechaOperacaoNoTerminoDaGravacao = false;
novaDevTit.applyUpdatesDosDataSetsNaGravacao = false
novaDevTit.nova()
novaDevTit.pedidoCab.estabeleci = 44468688 /* Estab Anchieta */;
novaDevTit.pedidoCab.locescritu = 408425 /* LE Anchieta */;
novaDevTit.pedidoCab.pessoa = 36786289 /* constrular - Maria Aldenor */;
novaDevTit.pedidoCab.numero = 123456;
novaDevTit.pedidoCab.emissao = new Date();
novaDevTit.pedido.append()
novaDevTit.pedido.classe = -1897048153 /* Prov Rec Diversas */;
novaDevTit.pedido.recurso = -1897047932 /* Estorno de Título */
novaDevTit.pedido.nucleo = 3813421 /* Almox Anchieta Melão */;
novaDevTit.pedido.movimentac = novaDevTit.pedidoCab.emissao
novaDevTit.pedido.post()
novaDevTit.estornaBaixaDeTitulo(284975351)
novaDevTit.aprova()
novaDevTit.grava()
abrindo devolução de título e alterando dados
Para realizar a edição de dados de uma nova devolução de título já gravada anteriormente, deve ser instanciado o OperacaoTituloDevolucao.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaDevTit.abre(385657215)
Em seguida os dados do cabeçalho podem ser acessados e editados pelo dataset pedidoCab.
novaDevTit.pedidoCab.estabeleci = 2501276 /* Estab Anchieta */;
novaDevTit.pedidoCab.post();
Os dados dos itens podem acessados e editados pelo dataset pedido.
novaDevTit.pedido.movimentac = new Date();
novaDevTit.pedido.post();
Lembrando que a operação de devolução deverá ter somente 1 item de pedido com o quantidade e unitários zerados ou não informados.
Em seguida deve ser chamado o grava.
novaDevTit.grava();
Exemplo completo no idbc. Há necessidade de trocar as chaves informadas por uma chave da base onde está sendo executado.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.fechaOperacaoNoTerminoDaGravacao = false;
novaDevTit.abre(385657215)
novaDevTit.pedidoCab.estabeleci = 2501276 /* Estab Anchieta */;
novaDevTit.pedidoCab.post();
novaDevTit.pedido.movimentac = new Date();
novaDevTit.pedido.post();
novaDevTit.grava();
abrindo devolução de título e aprovando
Para aprovar uma nova devolução de título já gravada anteriormente, deve ser instanciado o OperacaoTituloDevolucao.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaDevTit.abre(385657215)
Uma operação de devolução de título, por ser uma especialização da operação Pedido com Baixa Automática tem a característica de ser considerado um pedido até o momento de sua aprovação, dessa forma após aprovado será considerado como pedido baixado. Portanto antes da aprovação todos os cálculos e validações serão realizados da mesma forma que é feito em um pedido que será baixado posteriormente, porém após a provação os cálculos e validações são semelhantes a uma baixa de pedido.
O diferencial entre a devolução de título e a operação de pedido com baixa automática é que a devolução de título não exige negociação, dessa forma, a operação pode ser aprovada a qualquer momento.
Para realizar a aprovação da devolução deve ser utilizado o método aprova.
novaDevTit.aprova();
Em seguida deve ser chamado o grava.
novaDevTit.grava()
Exemplo completo no idbc.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.aprova();
novaDevTit.grava();
excluindo uma devolução de título
Não é possível cancelar uma operação de devolução de título, para que seja desfeita a devolução deve ser instanciado o OperacaoTituloDevolucao:
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
Em seguida deve ser utilizado o método abre() do objeto Operacao passando a chave de criação da operação.
novaDevTit.abre(385657215)
Caso a operação esteja aprovada, deve ser desaprovada, utilizando o método desaprova()
novaDevTit.desaprova()
Em seguida deve ser esvaziado o dataset de item do pedido utilizando o método empty() do dataset
novaDevTit.pedido.empty();
Em seguida deve ser chamado o grava.
novaDevTit.grava()
Exemplo completo no idbc.
__includeOnce(-1898141835); // /products/INTEQengine/configuration/iDBCsql library.ijs
__includeOnce(-1897052426); // ../objects/operacaoTituloDevolucao.js
var novaDevTit = new OperacaoTituloDevolucao()
novaDevTit.abre(385657215)
novaDevTit.desaprova()
novaDevTit.pedido.empty();
novaDevTit.grava();