A API de integração tem por objetivo ser um canal de comunicação entre o Tecsystem Monnae e os demais sistemas da Tecsystem.
A API de integração é formada por um conjunto de classes que permitem que outros sistemas se comuniquem e troquem dados com o Monnae de forma padronizada e controlada. Ela é constituída basicamente de uma interface, que disponibiliza os recursos acessíveis através da API, e uma série de classes auxiliares que facilitam o uso desses serviços.
Essa interface é compilada e distribuída como um pacote padrão Delphi (dcp/bpl) chamado APIIntegracao. Para que um sistema possa utilizá-la é necessário incluir esse pacote na lista de Runtime packages do projeto e sempre distribuí-lo junto com a aplicação.
Após incluir o pacote no projeto, será necessário incluir as units IntMonnaeProxy e UntMonnaeProxy. A primeira contém a interface da API - IMonnaeProxy - que disponibiliza todos os métodos que podem ser utilizados, enquanto a segunda contém a classe que implementa essa interface: TMonnaeProxy.
Para ter acesso à classe da API que implementa IMonnaeProxy é necessário invocar o método GetMonnaeProxy, passando como parâmetro o caminho do banco de dados do Monnae ao qual se deseja ter acesso. Esse método retorna um objeto do tipo IMonnaeProxy e a partir dele será possível invocar todos os demais métodos da API.
unit AcessoAPI; interface uses Contnrs, IntMonnaeProxy, UntMonnaeProxy; implementation procedure RecuperarCentrosCusto; var APIMonnae: IMonnaeProxy; CentrosCusto: TObjectList; begin APIMonnae := GetMonnaeProxy('C:\Monnae.fdb'); CentrosCusto := APIMonnae.RecuperarListaCentrosCusto; end; end.
O uso do método GetMonnaeProxy pode disparar as seguintes exceções:
function PersistirPessoa(Pessoa: TPessoaMP): integer;
Código da pessoa no Monnae.
A API verifica se uma pessoa já existe através do seu número de documento (CPF ou CNPJ). Caso a pessoa já exista, seus dados serão sobrescritos pelos dados que estão sendo enviados. Caso ela ainda não exista no banco de dados do Monnae, uma nova pessoa será incluída. Em ambos os casos a função irá retornar o código da pessoa no Monnae. Obs: Se uma pessoa com um código for enviada pela aplicação que consome a API ela será persistida sem que haja a verificação do documento, pois a API assume que esse código foi anteriormente incluído no Monnae e está sendo utilizado pela aplicação que a consome.
O uso do método PersistirPessoa pode disparar as seguintes exceções:
procedure ExcluirPessoa(CodigoPessoa: integer);
Nenhum.
O Monnae só permite que uma pessoa seja excluída caso ela não possua nenhum título vinculado. Para excluir uma pessoa que já tenha títulos cadastrados, será necessário excluir os títulos primeiro e só depois excluir a pessoa.
O uso do método ExcluirPessoa pode disparar as seguintes exceções:
function PersistirTitulo(Titulo: TTituloMP): integer;
Código do título no Monnae.
A API verifica se um título já existe através de seu código. Se o título informado tiver código igual ou menor do que zero, um novo título será incluído. Caso contrário a API irá buscar um título já existente através do código informado. Caso o título seja encontrado, seus dados serão sobrescritos pelos dados atuais. Caso o título não seja encontrado, uma exceção será lançada. Em ambos os casos (inclusão/alteração) a função irá retornar o código do título no Monnae.
O uso do método PersistirTitulo pode disparar as seguintes exceções:
procedure ExcluirTitulo(CodigoTitulo: integer);
Nenhum.
O Monnae só permite que um título seja excluído caso ele ainda não tenha sido pago.
O uso do método ExcluirTitulo pode disparar as seguintes exceções:
function RecuperarTitulo(CodigoTitulo: integer): TTituloMP;
Objeto do tipo TTituloMP que contém os dados do título.
O uso do método RecuperarTitulo pode disparar as seguintes exceções:
function VerificarTituloPago(CodigoTitulo: integer): Boolean;
Valor booleano que indica se o título foi (true) ou não (false) baixado.
O uso do método VerificarTituloPago não dispara exceções, mesmo que o título já não exista mais no Monnae.
function RecuperarConta(CodigoConta: integer): TContaMP;
Objeto do tipo TContaMP que contém os dados da conta.
O uso do método RecuperarConta pode disparar as seguintes exceções:
function RecuperarListaContas(Operacao: EnTipoOperacaoMP.Valores = credito): TObjectList;
Lista (TObjectList) de objetos do tipo TContaMP, cada um contendo os dados de uma conta.
O método RecuperarListaContas recupera apenas as contas ativas no Monnae. Caso não existam contas a serem retornadas, o método retornará um valor nulo (nil). O uso desse método não dispara exceções.
function RecuperarCentroCusto(Codigo: integer): TCentroCustoMP; overload; function RecuperarCentroCusto(Nome: string): TCentroCustoMP; overload;
Objeto do tipo TCentroCustoMP que contém as informações do centro de custo.
Caso o método RecuperarCentroCusto não encontre o centro de custo desejado, o método retornará um valor nulo (nil). O uso desse método não dispara exceções.
function RecuperarListaCentrosCusto: TObjectList;
Nenhum.
Lista (TObjectList) de objetos do tipo TCentroCustoMP, cada um contendo os dados de um centro de custo.
O método RecuperarListaCentrosCusto recupera apenas os centros de custo ativos no Monnae. Caso não existam centros de custo a serem retornados, o método retornará um valor nulo (nil). O uso desse método não dispara exceções.
function RecuperarLimiteCreditoDisponivel(CodigoPessoa: integer; const LimiteCredito: currency = 0): Currency;
Retorna a diferença entre o limite de crédito pré cadastrado na pessoa e a soma dos títulos em aberto dessa pessoa (PROCRECUPERARLIMITEDISPONIVEL).
Caso o limite de crédito informado no cadastro da pessoa seja 0,00 a função sempre retornará zero.
Obs: O parâmetro LimiteCredito serve para atualizar o limite disponível no caso de inclusão ou alteração do limite de crédito em que o valor ainda não esteja guardado no bando de dados. O procedure deverá verificar se esse valor é zero antes de pesquisar o valor no BD, caso o valor seja maior que zero o procedure assumirá esse valor como limite de crédito e retornará a diferença desse valor e a soma dos títulos de crédito em aberto da pessoa.
function RecuperarLimiteCreditoConcedido(CodigoPessoa: integer): Currency;
Retorna o limite de crédito concedido no cadastro da pessoa (PROCRECUPERARLIMITECONCEDIDO).
function RecuperarLimiteCreditoUtilizado(CodigoPessoa: integer; const LimiteCredito: currency = 0): Currency;
Retorna o limite de utilizado pela pessoa no Monnae(PROCRECUPERARLIMITEUTILIZADO). Esse valor é retornado da subtração entre o limite concedido e o limite disponível.
Obs: Caso seja passado valor no parâmetro LimiteCredito esse valor será levado em consideração como sendo o limite concedido.
function RecuperarCodigoPlanoContasPessoa(CodigoPessoa: integer): Integer;
Retorna o código do plano de contas padrão cadastrado na pessoa.
function PessoaIsentaDeCobranca(CodigoPessoa: integer): Boolean;
Retorna true se a pessoa for isenta de cobrança e false para o caso contrário.
A classe TPessoaMP (ClsPessoaMP) contém os atributos necessários para que se possa cadastrar uma pessoa no Monnae. Esta classe está contida na API pois há a necessidade de vinculo entre um título e uma pessoa. Logo, para que um título possa ser incluído, a pessoa deverá estar previamente cadastrada no Monnae.
| Campo | Descrição | Tipo | Tamanho | Obrigatório? |
|---|---|---|---|---|
| Código | Código da pessoa | Inteiro | – | Sim |
| Tipo | Define o tipo da pessoa: física ou jurídica | Enumerado | – | Sim |
| Nome/Razão Social | Nome/Razão Social da pessoa | Texto | 60 | Sim |
| Apelido/Nome fantasia | Apelido/Nome fantasia da pessoa | Texto | 60 | Não |
| Logradouro | Endereço da pessoa(Rua, Avenida…) | Texto | 80 | Não |
| Número | Número do endereço da pessoa | Texto | 05 | Não |
| Complemento | Complemento do endereço da pessoa | Texto | 80 | Não |
| Bairro | Bairro da pessoa | Texto | 30 | Não |
| Município | Município onde se localiza a pessoa | Texto | 60 | Não |
| UF | Estado onde se localiza o endereço da pessoa | Texto | 02 | Não |
| País | País onde se localiza o endereço da pessoa | Texto | 60 | Não |
| Cep | Cep do endereço da pessoa | Numérico | 09 | Não |
| Cpf/Cnpj | Documento da pessoa | Numérico | 14 | Não |
| Rg/Inscrição estadual | Documento da pessoa | Numérico | 18 | Não |
| Telefone | Contato da pessoa | Numérico | 18 | Não |
| Fax | Contato da pessoa | Numérico | 18 | Não |
| Celular | Contato da pessoa | Numérico | 18 | Não |
| Contato da pessoa | Texto | 50 | Não | |
| Grupo | Campo de cadastro para utilização livre do usuário(Grupo de enquadramento da pessoa) | Texto | 20 | Não |
| Situação | Situação da pessoa: Ativa ou Inativa | Enumerado | – | Sim |
| Data de cadastro | Data em que a pessoa foi cadastrada | Data | – | Sim |
| Código interno | Código livre que pode ser atribuído a uma pessoa no Monnae | Texto | 30 | Não |
| Observações | Observações relacionadas a pessoa | Texto | 2000 | Não |
| Limite de crédito | Limite de crédito da pessoa | Numérico | 16 | Não |
| Código plano contas | Código do plano de contas padrão | Inteiro | – | Não |
| Isenta de cobrança | Isenta a pessoa da cobrança do módulo de cobrança | Booleano | – | Sim |
A classe TContaMP (ClsContaMP) contém os atributos pertinentes a uma conta de um plano de contas.
| Campo | Descrição | Tipo | Tamanho | Obrigatório? |
|---|---|---|---|---|
| Código | Código da conta | Inteiro | – | Sim |
| Operação | Tipo da operação (Débito ou Crédito) | Enumerado | – | Sim |
| Grupo | Grupo ao qual a conta pertence | Texto | 30 | Sim |
| Subgrupo | Subgrupo ao qual a conta pertence | Texto | 30 | Sim |
| Número | Número da conta | Texto | 33 | Não |
| Nome | Nome da conta | Texto | 30 | Sim |
| Descrição | Descrição da conta | Texto | 200 | Não |
| Valor | Valor que será atribuído à conta no título | Numérico | 11 | Sim |
| Situação | Situação da conta (ativa ou inativa) | Enumerado | – | Sim |
| Centro de custo | Centro de custo vinculado à conta (durante a persistência de um título) | Enumerado | – | Sim |
A classe TCentroCustoMP (ClsCentroCustoMP) contém atributos pertinentes a um centro de custo.
| Campo | Descrição | Tipo | Tamanho | Obrigatório? |
|---|---|---|---|---|
| Código | Código do centro de custo | Inteiro | – | Sim |
| Nome | Nome do centro de custo | Texto | 60 | Sim |
| Classificação | Classificação do centro de custo | Texto | 20 | Sim |
| Descrição | Descrição do centro de custo | Texto | 500 | Não |
| Observações | Informações adicionais do centro de custo | Texto | 2000 | Não |
| Padrão | Indica se o centro de custo está configurado como padrão do sistema | Booleano | – | Sim |
| Situação | Situação atual do centro de custo (ativo/inativo) | Enumerado | – | Sim |
A classe TTituloMP (ClsTituloMP) contém atributos pertinentes a um título de cobrança.
| Campo | Descrição | Tipo | Tamanho | Obrigatório? |
|---|---|---|---|---|
| Código | Código do título | Inteiro | – | Sim |
| Operação | Define o tipo do título: receita (crédito) ou despesa (débito) | Enumerado | – | Sim |
| CodigoPessoa | Código da Pessoa, no Monnae, ao qual o título está vinculado | Numérico | – | Sim |
| Histórico | Descrição do título | Texto | 200 | Não |
| Portador | Portador do título | Texto | 60 | Não |
| Número | Número do documento | Texto | 25 | Sim |
| Data de competência | Data de competência do título | Data | – | Não |
| Data de emissão | Data de emissão do título | Data | – | Sim |
| Data de vencimento | Data de vencimento do título | Data | – | Sim |
| Valor | Valor integral do título | Numérico | 11 | Sim |
| Contas | Lista de contas (TObjectList) que classificam o título de acordo com sua natureza. | Objeto | – | Sim |
| Observações | Observações relacionadas ao título | Texto | 2000 | Não |
Todos os tipos enumerados possuem um método para retornar a lista de valores possíveis, para converter um valor em string e para converter uma string no valor correspondente.
Todas as exceções lançadas pela API estão definidas na unit UntExcecoesMP.
O comportamento da API e as exceções lançadas estão descritas em cada serviço.