APIs na               \o/

Introdução

Por que devemos pensar em APIs?

Na prática

API? REST? SOAP? SOA? Microservices?

APIs

Application Programming Interfaces

REST   vs   SOAP

response JSON

response XML

REST + JSON

Representational State Transfer

JavaScript Object Notation

Level 0: The Swamp of POX

Level 1: Resources

Level 2: HTTP Verbs

Level 3: Hipermedia Controls

RESTful? Richardson Maturity Model

Glory of REST

http://api.ima.sp.gov.br/v1/pedidos/3747

http

api.ima.sp.gov.br

v1

pedidos

3747

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$secretarias = array(
  array(
    'codigo' => 'A',
    'nome' => 'Administração'
  )
);

// READ
$app->get('/secretarias', function () use ($app, $secretarias) {      
    return $app->json($secretarias);
});

// CREATE
$app->post('/secretarias', function (Request $request) use ($secretarias) {
    $secretarias[] = array(
      'codigo' => $request->get('codigo'),
      'nome' => $request->get('nome')
    );   
    
    return new Response('secretaria cadastrada', 201);
});

// UPDATE OR REPLACE
$app->put('/secretarias/{id}', function ($id) {  
    //
});

// DELETE
$app->delete('/secretarias/{id}', function ($id) {
    //
});

// UPDATE/MODIFY
$app->patch('/secretarias/{id}', function ($id) {
    //
});

$app->run();
// src/AppBundle/Controller/SecretariaController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use FOS\RestBundle\Routing\ClassResourceInterface;

class SecretariaController implements ClassResourceInterface
{
  public static $secretarias = array(
    array(
      'codigo' => 'A',
      'nome' => 'Administração'
    ),
    array(
      'codigo' => 'S',
      'nome' => 'Saúde'
    ),
  );
  
  public function cgetAction()
  {
    $secretarias = self::$secretarias;
    
    return $secretarias;
  }
  
  public function getAction($id)
  {
    $secretarias = self::$secretarias;
    
    return $secretarias[$id];
  }
  
  public function postAction()
  {}
    
  public function deleteAction()
  {}
}
composer require friendsofsymfony/rest-bundle
# app/config/config.yml
framework:
    serializer:
        enabled: true    

fos_rest:
    body_listener: true
    format_listener: true
    param_fetcher_listener: true
    view:
        view_response_listener: 'force'
    routing_loader:
        default_format: json
// api/models/Secretaria.js

module.exports = {
  attributes: {
    codigo: { type: 'integer' },
    nome: { type: 'string' },
  }
};
sails generate new sailsRestSample --no-front-end

sails generate api secretaria
// api/controllers/SecretariaController.js

module.exports = {};

SOA (Services Oriented Architecture)

Microservices

How to Design Microservices for Agile Architecture

Choosing Application Integration Technology

From Fragile to Agile Software Architecture

Por que ter uma Estratégia de APIs nos negócios

API Gateway governando a arquitetura de Microservices

Estratégias já desenvolvidas

SIM, Autenticação única

unit USM_Fiscalizacao_CCorrenteFiscal;

interface

uses
  System.SysUtils, System.Classes, Datasnap.DSServer, Datasnap.DSAuth, System.StrUtils, 
  UIntegracaoDLLs, Data.DB, Datasnap.DBClient, Data.DBXJSON, UClassProxyCDS, UIntegracaoFiscalizacao;

type
  [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal')]
  TSM_Fiscalizacao_CCorrenteFiscal = class(TDSServerModule)
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrente')]
    function GetContaCorrente(IdOrigem: Integer; const TipoOrigem: String; AnoExercicio: Integer; IdTributoImp: Integer; SitDividaItem: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContasContribuinte')]
    function GetContasContribuinte(IdContribuinte: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetValorPago')]
    function GetValorPago(AnoExercicio: Integer; MesExercicio: Integer): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraBloqueto')]
    function UpdateGeraBloqueto(IdContribuinte: Integer; DtVencimento: TDateTime; IdParcelas: TJSONArray; BloquetoUnico: Boolean; out IdCobranca: TJSONArray; out Descricao: TJSONArray): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_MontaBloqueto')]
    procedure UpdateMontaBloqueto(IdContribuinte: Integer; DtVencimento: TDateTime; IdParcelas: TJSONArray; BloquetoUnico: Boolean; out IdCobranca: TJSONArray; out Descricao: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosContribuinte')]
    function GetDadosContribuinte(IdContribuinte: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSHomologadoPorCadastroEconomico')]
    procedure LancaISSHomologadoPorCadastroEconomico(RegistrarAliquota: Boolean; Ano: Integer; Mes: Integer; IdCadEconomico: Integer; UsarAtivPrincipal: Boolean; out NumLancamentos: Integer; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSHomologadoPorAtividadeEconomica')]
    procedure LancaISSHomologadoPorAtividadeEconomica(RegistrarAliquota: Boolean; Ano: Integer; Mes: Integer; LancaPorCodae: Boolean; IdAtivEconomica: Integer; UsarAtivPrincipal: Boolean; LancaPorCnae: Boolean; IdCnaeFiscal: Integer; out NumLancamentos: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InscricaoDividaAtiva')]
    function InscricaoDividaAtiva(IdTributoImp: Integer; AnoExercicio: Integer; MesExercicioInicial: Integer; MesExercicioFinal: Integer; DtVencimento: TDateTime; DtInscricao: TDateTime; out NumInscritos: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ImovelComDebitoDA')]
    function ImovelComDebitoDA(IdUnidadeImob: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ContribuinteComDebitoDA')]
    function ContribuinteComDebitoDA(IdContribuinte: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ContribuinteInadimplente')]
    function ContribuinteInadimplente(IdContribuinte: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_MontaTituloCCF')]
    function MontaTituloCCF(IdOrigem: Integer; const TipoOrigem: String): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelas')]
    function GetParcelas(IdCCorrente: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetSituacaoFiscal')]
    function GetSituacaoFiscal(CodTabela: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DecisaoDeImpugnacao')]
    procedure DecisaoDeImpugnacao(const TipoDecisao: String; IdCCorrenteFiscal: Integer; DtVencimentoParcela1: TDateTime; NumParcelas: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsereDocumento')]
    function InsereDocumento(IdDocumento: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertCCorrentePorDocumento')]
    procedure UpdateInsertCCorrentePorDocumento(IdDocumento: Integer; IdContribuinte: Integer; IdsTributos: TJSONArray; FatorMultiplicacao: TJSONArray; DtVencimento: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateSituacaoDivida')]
    procedure UpdateSituacaoDivida(IdCCorrente: Integer; SitDividaItem: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ContaCorrentePaga')]
    function ContaCorrentePaga(IdCCorrenteFisc: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateCCorrentePorDocumento')]
    procedure UpdateUpdateCCorrentePorDocumento(IdDocumento: Integer; IdContribuinte: Integer; IdsTributos: TJSONArray; FatorMultiplicacao: TJSONArray; DtVencimento: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSEnquadradoPorCadastroEconomico')]
    procedure LancaISSEnquadradoPorCadastroEconomico(Ano: Integer; Mes: Integer; IdCadEconomico: Integer; out NumLancamentos: Integer; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSEnquadradoPorAtividadeEconomica')]
    procedure LancaISSEnquadradoPorAtividadeEconomica(Ano: Integer; Mes: Integer; LancaPorCodae: Boolean; IdAtivEconomica: Integer; LancaPorCnae: Boolean; IdCnaeFiscal: Integer; out NumLancamentos: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ProcessaRetornoISSHomologado')]
    procedure ProcessaRetornoISSHomologado(IdCobranca: Integer; Aliquota: Double; VlTributavel: Double; VlBruto: Double);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetIdCCorrenteFiscPorIdCobranca')]
    function GetIdCCorrenteFiscPorIdCobranca(IdCobranca: Integer): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrenteParaCobranca')]
    function GetCCorrenteParaCobranca(IdTributoImp: Integer; IdContribuinteImob: Integer; IdBairro: Integer; NumImoveis: Integer; DtLancamento: TDateTime; DtVencimento: TDateTime; VlInicial: Double; VlFinal: Double): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrenteParaSuspensao')]
    function GetCCorrenteParaSuspensao(IdContribuinte: Integer; IdTributoImp: Integer; Ano: Integer; Mes: Integer; DtLancamento: TDateTime): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_SuspendeDebito')]
    procedure UpdateSuspendeDebito(IdCCorrenteFisc: TJSONArray; IdMotSuspensao: Integer; DtSuspensao: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetIdCCorrenteFiscPorIdDocImpugnacao')]
    function GetIdCCorrenteFiscPorIdDocImpugnacao(IdDocumento: Integer): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CancelaPedidoImpugnacao')]
    procedure CancelaPedidoImpugnacao(IdDocumento: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DeferePedidoImpugnacao')]
    procedure DeferePedidoImpugnacao(IdDocumento: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteAtendimento')]
    function GetContaCorrenteAtendimento(IdContribuinte: Integer; AnoExercicioIni: Integer; AnoExercicioFim: Integer; IdTributoImp: Integer; SitDividaItem: Integer; IdUnidadeImob: Integer; IdCadEconomico: Integer; const TextoInSitDivida: String; const TextoNotInSitDivida: String; const TextoInTributo: String; const TextoNotInTributo: String; BuscarTaxas: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InscricaoDividaAtivaPorIdsCCorrente')]
    procedure UpdateInscricaoDividaAtivaPorIdsCCorrente(IdsCCorrente: TJSONArray; DtInscrDivida: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertTaxa')]
    procedure UpdateInsertTaxa(Values: TJSONArray; out AutoIncGerado: Integer; DtVencParcela: TDateTime; DtVencCobranca: TDateTime; out IdCobranca: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetValoresParcelasPagas')]
    procedure GetValoresParcelasPagas(IdCCorrenteFisc: Integer; out VlParcela: Double; out VlJuros: Double; out VlMulta: Double; out VlCorrecao: Double; out VlDesconto: Double; out VlPago: Double);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateVlDevolvido')]
    procedure UpdateVlDevolvido(IdCCorrente: Integer; VlDevolvido: Double; Soma: Boolean);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ContribuintePossuiDebitoDA')]
    function ContribuintePossuiDebitoDA(IdContribuinte: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrentesAgregadas')]
    function GetCCorrentesAgregadas(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AdicionaAjuizamento')]
    procedure AdicionaAjuizamento(IdCCorrenteFisc: Integer; IdPeticao: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AdicionaAjuizamentos')]
    procedure UpdateAdicionaAjuizamentos(IdsCCorrenteFisc: TJSONArray; IdPeticao: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_RemoveAjuizamento')]
    procedure RemoveAjuizamento(IdCCorrenteFisc: Integer; IdPeticao: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_EstornaDebito')]
    procedure EstornaDebito(IdCCorrenteFisc: Integer; const Observacao: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_Descarrega')]
    procedure Descarrega(IdSimulacao: Integer; IdClasseInicio: Integer; IdClasseFim: Integer; const TipoOrigem: String; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaAlvara')]
    procedure DescarregaAlvara(IdCadEconomico: Integer; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaParcelasAlunos')]
    procedure DescarregaParcelasAlunos(IdSimulacao: Integer; const IdsClasses: String; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasVencidasCount')]
    function GetParcelasVencidasCount(IdContribuinte: Integer): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasVencidas')]
    function GetParcelasVencidas(IdContribuinte: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraLivroDA')]
    procedure GeraLivroDA(AnoInscricao: Integer; NumLivro: Integer; NumPagIni: Integer; NumPagLivro: Integer; NumLinhaPag: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AcaoCancelaPedidoImpugnacao')]
    procedure UpdateAcaoCancelaPedidoImpugnacao(CtxTramit: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AcaoDeferePedidoImpugnacao')]
    procedure UpdateAcaoDeferePedidoImpugnacao(CtxTramit: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCobrancasPorIdCCorrente')]
    function GetCobrancasPorIdCCorrente(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateSituacaoParcelas')]
    procedure UpdateSituacaoParcelas(IdCCorrenteFisc: Integer; SitPgtoItem: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CancelaParcelamento')]
    procedure CancelaParcelamento(IdCCorrenteFisc: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosOrigemContaCorrente')]
    procedure GetDadosOrigemContaCorrente(const TipoOrigem: String; IdOrigem: Integer; out DescrOrigem: String; out DescrAux: String; out NumProcesso: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosCCorrentePorIdOrigemTipoOrigem')]
    function GetDadosCCorrentePorIdOrigemTipoOrigem(IdOrigem: Integer; const TipoOrigem: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetImoveisCadEconsPorContribuinte')]
    function GetImoveisCadEconsPorContribuinte(IdContribuinte: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAtendimento')]
    function GetParcelasAtendimento(IdCCorrente: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetResumoCCorrente')]
    function GetResumoCCorrente(IdContribuinte: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrentePorTributo')]
    function GetCCorrentePorTributo(IdTributo: Integer; AnoExercicio: Integer; VlInicial: Double; VlFinal: Double): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetValoresCorrigidos')]
    function GetValoresCorrigidos(IdReferencia: Integer; const TipoReferencia: String; const TipoRetorno: String; SituacaoDebito: Integer; DtCorrecao: TDateTime): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByIdsParcelasDtVencimento')]
    function UpdateGetParcelasByIdsParcelasDtVencimento(IdsParcelas: TJSONArray; UseDtVencimento: Boolean; DtVencimento: TDateTime; IdTpParcelamento: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteAtendimentoWeb')]
    function GetContaCorrenteAtendimentoWeb(IdContribuinte: Integer; IdTributoImp: Integer; SitDividaItem: Integer; IdUImobCadEconomico: Integer; const TipoUImobCadEconomico: String; UtilizaAnoExercicioPadrao: Boolean; const AnoExercicio: String): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteAtendimentoByIdOrigem')]
    function GetContaCorrenteAtendimentoByIdOrigem(IdContribuinte: Integer; AnoExercicio: Integer; MesExercicio: Integer; IdTributoImp: Integer; SitDividaItem: Integer; IdOrigem: Integer; const TipoOrigem: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCalculoByIdsParcelasWeb')]
    function UpdateGetCalculoByIdsParcelasWeb(IdContribuinte: Integer; IdcCCParcelas: TJSONArray; const TipoCCParcelas: String; const DtVencimento: String): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CancelaParcelamentoPorErroOp')]
    procedure CancelaParcelamentoPorErroOp(IdCCorrenteFisc: Integer; const Observacao: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaIPTU')]
    procedure DescarregaIPTU(IdSimulacao: Integer; IdClasseInicio: Integer; IdClasseFim: Integer; const ObsCC: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertMultiplasTaxas')]
    procedure UpdateInsertMultiplasTaxas(Data: TJSONArray; IdConvenio: Integer; DtVencCobranca: TDateTime; out IdCobranca: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraCobrancasFolhaVerde')]
    procedure GeraCobrancasFolhaVerde(DtBase: TDateTime; DtVenc1: TDateTime; DtVenc2: TDateTime; DtVenc3: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateCCorrenteComParcelas')]
    function UpdateUpdateCCorrenteComParcelas(Values: TJSONArray; ParcData: TJSONArray; ExtraData: TJSONArray; out ConcorGerado: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertCCorrenteComParcelas')]
    function UpdateInsertCCorrenteComParcelas(Values: TJSONArray; ParcData: TJSONArray; ExtraData: TJSONArray; out AutoIncGerado: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ApurarSaldoDevedor')]
    procedure ApurarSaldoDevedor(IdCCorrenteFisc: Integer; const Observacao: String; out IdCCorrenteSaldo: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DesfazerSaldo')]
    procedure DesfazerSaldo(IdCCorrenteFisc: Integer; const Observacao: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraCobrancasImobiliarias')]
    procedure GeraCobrancasImobiliarias;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_SuspendeDebitoObsIdDocImpug')]
    procedure UpdateSuspendeDebitoObsIdDocImpug(IdsCCorrenteFisc: TJSONArray; IdMotSuspensao: Integer; DtSuspensao: TDateTime; const Observacao: String; IdDocImpug: Integer; MatrServidor: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DecideDebitos')]
    procedure UpdateDecideDebitos(IdsCCorrenteFisc: TJSONArray; DecisaoItem: Integer; SitDividaItem: Integer; DtDecisao: TDateTime; VlNominal: Double; VlJurosMora: Double; VlJurosFin: Double; VlMultaMora: Double; VlMultaPun: Double; VlCorrecao: Double; const Observacao: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_EstornaMultiplosDebitos')]
    procedure UpdateEstornaMultiplosDebitos(IdsCCorrenteFisc: TJSONArray; const Observacao: String; const NumProcCancela: String; SitDividaItem: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosOrigemContaCorrenteEx')]
    function UpdateGetDadosOrigemContaCorrenteEx(const TipoOrigem: String; IdsOrigem: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraBloquetoWeb')]
    function UpdateGeraBloquetoWeb(IdContribuinte: Integer; IdsParcelas: TJSONArray; const DtVencimento: String): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AcaoLancaDebitoISSHabitese')]
    procedure UpdateAcaoLancaDebitoISSHabitese(CtxTramit: TJSONArray; IdCCorrenteFisc: Integer; out IdCobranca: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AlteraSituacaoDebitosVinculados')]
    procedure UpdateAlteraSituacaoDebitosVinculados(IdsCCorrenteFiscal: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InscricaoDAColetiva')]
    function InscricaoDAColetiva(IdTributoImp: Integer; IdTipoDoc: Integer; AnoExercicio: Integer; DtVencimento: TDateTime; DtInscricao: TDateTime; out NumInscritos: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InscricaoDAColetivaPorIdsCCorrente')]
    procedure UpdateInscricaoDAColetivaPorIdsCCorrente(IdsCCorrente: TJSONArray; DtInscricao: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetRegsCartaCobrancaDA')]
    function GetRegsCartaCobrancaDA(IdTributoImp: Integer; VlMinimo: Double; VlMaximo: Double; AnoInicial: Integer; AnoFinal: Integer; DtVencimento: TDateTime; out TodasParcelas: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByContribuinte')]
    function UpdateGetParcelasByContribuinte(IdContribuinte: Integer; TodasParcelas: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ConsisteChamadaParcelamento')]
    function UpdateConsisteChamadaParcelamento(IdTpParcelamento: Integer; IdSimulacaoCon: Integer; IdContribuinte: Integer; IdsCCorrente: TJSONArray; const OrigemConsistencia: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCD')]
    function GetParcelasJMCD(IdCCorrente: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaUpdate')]
    procedure DescarregaUpdate(IdSimulacao: Integer; IdClasseInicio: Integer; IdClasseFim: Integer; const TabelaBase: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InscricaoDAIndividual')]
    procedure UpdateInscricaoDAIndividual(IdsCCorrente: TJSONArray; DtInscricao: TDateTime; DtBase: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSSubstituicaoPorCadastroEconomico')]
    procedure LancaISSSubstituicaoPorCadastroEconomico(Ano: Integer; Mes: Integer; IdCadEconomico: Integer; out NumLancamentos: Integer; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaISSSubstituicaoPorAtividadeEconomica')]
    procedure LancaISSSubstituicaoPorAtividadeEconomica(Ano: Integer; Mes: Integer; LancaPorCodae: Boolean; IdAtivEconomica: Integer; LancaPorCnae: Boolean; IdCnaeFiscal: Integer; out NumLancamentos: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CorrigeLancDuplicados')]
    procedure CorrigeLancDuplicados(AnoExercicio: Integer; MesExercicioItem: Integer; const CodigoInicial: String; const CodigoFinal: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetLotesDuplicados')]
    function GetLotesDuplicados(AnoExercicio: Integer; MesExercicioItem: Integer; RegistrosPorLote: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDetalhesCCorrente')]
    function GetDetalhesCCorrente(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CancelaCCFiscalPorBaixaCadastro')]
    procedure CancelaCCFiscalPorBaixaCadastro(IdCadastroEconomico: Integer; DtEncerramento: TDateTime);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AtivaCCFiscalCanceladaBaixaCadastro')]
    procedure AtivaCCFiscalCanceladaBaixaCadastro(IdCadastroEconomico: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertTaxaAnonimo')]
    procedure UpdateInsertTaxaAnonimo(Values: TJSONArray; out AutoIncGerado: Integer; dtVencimentoCobranca: TDateTime; out IdsCobranca: TJSONArray; NumCobrancas: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_AtualizaIdContribuinte')]
    procedure AtualizaIdContribuinte(IdContribuinteOld: Integer; IdContribuinteNew: Integer; IdCadEconomico: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAPartirCotaUnica')]
    function UpdateGetParcelasAPartirCotaUnica(TotalParcelas: Integer; IdCCorrenteFisc: Integer; IdContribuinte: Integer; IdTributo: Integer; SitDivida: Integer; AnoExercicio: Integer; MesExercicio: Integer; const TipoOrigem: String; IdOrigem: Integer; VlNominal: Double; Moeda: Integer; DtLancemento: TDateTime; Parcelas: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GeraParcelasAPartirCotaUnica')]
    procedure UpdateGeraParcelasAPartirCotaUnica(IdCCorrenteFiscal: Integer; Parcelas: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LancaSemMovimentoEconomico')]
    procedure UpdateLancaSemMovimentoEconomico(IdCCorrentes: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaRecalculoIPTU')]
    procedure DescarregaRecalculoIPTU(IdSimulacao: Integer; IdUnidadeImob: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByIdCCDtVencimento')]
    function GetParcelasByIdCCDtVencimento(IdCC: Integer; UseDtVencimento: Boolean; DtVencimento: TDateTime): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDemonstrativoDebito')]
    function UpdateGetDemonstrativoDebito(IdCCs: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertCCorrenteParcelasTribTaxaVistoria')]
    function UpdateInsertCCorrenteParcelasTribTaxaVistoria(Values: TJSONArray; out AutoIncGerado: Integer; DtVencParcela: TDateTime; DtVencCobranca: TDateTime; out IdCobranca: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContasCorrentes')]
    function UpdateGetContasCorrentes(IdsCCs: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetNumProcessoParcelamento')]
    function GetNumProcessoParcelamento(IdCCorrenteFisc: Integer): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDividaAtivaAtendimento')]
    function GetDividaAtivaAtendimento(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCDtVencimento')]
    function GetParcelasJMCDtVencimento(IdCCorrente: Integer; DtVencimento: TDateTime; UseCalculoDesconto: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAtendimentoOrigemCalculo')]
    function GetParcelasAtendimentoOrigemCalculo(IdCCorrente: Integer; const OrigemCalculo: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosMainframeAtendimento')]
    function GetDadosMainframeAtendimento(IdCCorrenteFiscal: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateObservacoes')]
    function UpdateUpdateObservacoes(IdsCC: TJSONArray; const Observacao: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasDividaAtivaAtendimento')]
    function GetParcelasDividaAtivaAtendimento(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCDEx')]
    function GetParcelasJMCDEx(IdCCorrente: Integer; NumParcelas: Integer; IdTipoParcelamento: Integer; DtVencimento: TDateTime): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCDtVencimentoEx')]
    function GetParcelasJMCDtVencimentoEx(IdCCorrente: Integer; DtVencimento: TDateTime; UseCalculoDesconto: Boolean; NumParcelas: Integer; IdTipoParcelamento: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAtendimentoComDesconto')]
    function GetParcelasAtendimentoComDesconto(IdCCorrente: Integer; const OrigemCalculo: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetItensSimplesNacional')]
    function GetItensSimplesNacional(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DesfazEstornoMultiplosDebitos')]
    procedure UpdateDesfazEstornoMultiplosDebitos(IdsCCorrenteFisc: TJSONArray; const Observacao: String; const NumProcCancela: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetInformacoesProtesto')]
    function GetInformacoesProtesto(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetHistoricoOcorrProtesto')]
    function GetHistoricoOcorrProtesto(IdProtesto: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetHistCancelamentoCartasProtesto')]
    function GetHistCancelamentoCartasProtesto(IdProtesto: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelas2aViaByIdsCCorrente')]
    function UpdateGetParcelas2aViaByIdsCCorrente(IdsCCorrente: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrenteByOrigemIdentCliente')]
    function GetCCorrenteByOrigemIdentCliente(const TipoOrigem: String; IdOrigem: Integer; const IdentCliente: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDebitosAgregados')]
    function UpdateGetDebitosAgregados(IdCCorrenteFisc: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteDMS')]
    function GetContaCorrenteDMS(IdCadEconomico: Integer; AnoExercicio: Integer; MesExercicio: Integer; IdTributoImp: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetReceitasDMS')]
    function GetReceitasDMS(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DescarregaISSFixo')]
    procedure DescarregaISSFixo(IdSimulacao: Integer; IdClasseInicio: Integer; IdClasseFim: Integer; out IdsCobranca: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CalculaTaxasDiversas')]
    function CalculaTaxasDiversas(IdTributo: Integer; AnoExercicio: Integer; MesExercicio: Integer; out DtVencimento: TDateTime; out DtPagamento: TDateTime; Fator: Double; VlTributo: Double): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CancelaDebitosPorRecalculo')]
    procedure CancelaDebitosPorRecalculo(IdContribuinte: Integer; IdOrigem: Integer; IdTributoImp: Integer; Ano: Integer; Mes: Integer; const TipoOrigem: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContasCorrentesEx')]
    function UpdateGetContasCorrentesEx(IdsCCs: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetIdsCCsAjuizados')]
    function GetIdsCCsAjuizados: TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_ConsisteChamadaGuiaCarne')]
    procedure UpdateConsisteChamadaGuiaCarne(IdsParcelas: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_MontaObservacaoCC')]
    function MontaObservacaoCC(const Acao: String; const Observacao: String): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetProcessosJudiciais')]
    function UpdateGetProcessosJudiciais(IdsCCorrenteFisc: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetTributosByIdsCCorrente')]
    function UpdateGetTributosByIdsCCorrente(IdsCCorrenteFisc: TJSONArray): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_SalvarCustasProcessuais')]
    procedure UpdateSalvarCustasProcessuais(Values: TJSONArray; IdCCorrenteAcordo: Integer; IdsCCTransacionados: TJSONArray; IdTpParcelamento: Integer; IdContribuinte: Integer; DtVencEntrada: TDateTime; DtVenc1Parc: TDateTime; const NroAcordoCobranca: String; const NroProtocolo: String; out IdGare: Integer; out IdCobrancaEmol: Integer; out IdsCobrancaHonor: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_PermiteGerarHonorarios')]
    function UpdatePermiteGerarHonorarios(IdsCCorrenteFisc: TJSONArray; out Mensagem: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_PermiteGeraEmolumentos')]
    function UpdatePermiteGeraEmolumentos(IdsCCorrenteFisc: TJSONArray; out Mensagem: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDebitosVinculados')]
    function GetDebitosVinculados(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCDEx2')]
    function GetParcelasJMCDEx2(IdCCorrente: Integer; VlNominalTransacionado: Double; ValorEntrada: Double; NumParcelas: Integer; IdTipoParcelamento: Integer; DtVencimento: TDateTime): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasJMCDtVencimentoEx2')]
    function GetParcelasJMCDtVencimentoEx2(IdCCorrente: Integer; VlNominalTransacionado: Double; ValorEntrada: Double; DtVencimento: TDateTime; UseCalculoDesconto: Boolean; NumParcelas: Integer; IdTipoParcelamento: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_VerificaCCorrenteNaoSelecDeProcessos')]
    function UpdateVerificaCCorrenteNaoSelecDeProcessos(IdsCCorrenteFisc: TJSONArray; out Mensagem: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetNumPeticaoByIdCC')]
    function GetNumPeticaoByIdCC(IdCCorrenteFisc: Integer): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetReceitasNFSE')]
    function GetReceitasNFSE(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAtendimentoSemCorrecao')]
    function GetParcelasAtendimentoSemCorrecao(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetNumProcessoOrigemByIdCCCusto')]
    function GetNumProcessoOrigemByIdCCCusto(IdCCorrenteFisc: Integer): String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetReceitasTaxas')]
    function GetReceitasTaxas(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteAtendimentoByDepositosADM')]
    function UpdateGetContaCorrenteAtendimentoByDepositosADM(IdsCCorrente: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByIdsParcelasDtVencimentoEx')]
    function UpdateGetParcelasByIdsParcelasDtVencimentoEx(IdsParcelas: TJSONArray; UseDtVencimento: Boolean; DtVencimento: TDateTime; IdTpParcelamento: Integer; BuscaParcelasDoTributoAgregado: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateCCorrenteComParcelasEx')]
    function UpdateUpdateCCorrenteComParcelasEx(Values: TJSONArray; ParcData: TJSONArray; ExtraData: TJSONArray; const NumPeticao: String; DtPeticao: TDateTime; out ConcorGerado: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertCCorrenteComParcelasEx')]
    function UpdateInsertCCorrenteComParcelasEx(Values: TJSONArray; ParcData: TJSONArray; ExtraData: TJSONArray; const NumPeticao: String; DtPeticao: TDateTime; out AutoIncGerado: Integer): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByIdsParcelasDtVencimentoEx2')]
    function UpdateGetParcelasByIdsParcelasDtVencimentoEx2(IdsParcelas: TJSONArray; UseDtVencimento: Boolean; DtVencimento: TDateTime; IdTpParcelamento: Integer; BuscaParcelasDoTributoAgregado: Boolean; UseCalculoDesconto: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrentesParaAlteracao')]
    function UpdateGetCCorrentesParaAlteracao(IdsCCorrente: TJSONArray; MoedaAlteracao: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCCorrentesParaAlteracaoEx')]
    function UpdateGetCCorrentesParaAlteracaoEx(Values: TJSONArray; MoedaEntrada: Integer; MoedaSaida: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateAlteracoesContaCorrente')]
    procedure UpdateUpdateAlteracoesContaCorrente(Values: TJSONArray; const NumProtocolo: String; MoedaAlteracao: Integer; IndAntecipacao: Boolean; DtAntecipacao: TDateTime; const Observacao: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasByIdsParcelasDtVencimentoEx3')]
    function UpdateGetParcelasByIdsParcelasDtVencimentoEx3(IdsParcelas: TJSONArray; UseDtVencimento: Boolean; DtVencimento: TDateTime; IdTpParcelamento: Integer; BuscaParcelasDoTributoAgregado: Boolean; UseCalculoDesconto: Boolean; UseCalculoCorrecao: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasCobrancaByIdsParcelas')]
    function UpdateGetParcelasCobrancaByIdsParcelas(IdsParcela: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetAcordosInadimplentesPorContribuinte')]
    function UpdateGetAcordosInadimplentesPorContribuinte(IdContribuinte: Integer; IdsCCorrente: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetAcordoPermitido')]
    function GetAcordoPermitido(id_ccorrente_fisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetTipoParcelamentoPorIdsCCs')]
    function UpdateGetTipoParcelamentoPorIdsCCs(IdsCCorrente: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetHistoricoAltCC')]
    function UpdateGetHistoricoAltCC(ID_CC: Integer; FiltroTipoAlteracao: TJSONArray; FiltroMotivoAlteracao: TJSONArray; FiltroAplicacaoAlteracao: TJSONArray; FiltrarSituacaoDivida: Smallint; FiltrarSituacaoPgto: Smallint; FiltrarDataVenc: Smallint; FiltrarAlteracaoCC: Smallint): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_InsertTaxaEx2')]
    procedure UpdateInsertTaxaEx2(Values: TJSONArray; out AutoIncGerado: Integer; DtVencParcela: TDateTime; DtVencCobranca: TDateTime; out IdCobranca: Integer; IdTpParcelamento: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetCobrSegundaViaMoedaNac')]
    function GetCobrSegundaViaMoedaNac(IdParcela: Integer): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateComHistorico')]
    procedure UpdateUpdateComHistorico(Values: TJSONArray; out ConcorGerado: Integer; GerarHistorico: Boolean; AplicacaoOrigemItem: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateCCorrenteComParcelasEx2')]
    function UpdateUpdateCCorrenteComParcelasEx2(Values: TJSONArray; ParcData: TJSONArray; ExtraData: TJSONArray; const NumPeticao: String; DtPeticao: TDateTime; out ConcorGerado: Integer; ApenasInclusaoParcela: Boolean): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDadosByIdCC')]
    function GetDadosByIdCC(IdCC: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDebitosParcelasAgregadas')]
    function UpdateGetDebitosParcelasAgregadas(IdsParcelas: TJSONArray): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetDetalhesCCorrenteHistorico')]
    function GetDetalhesCCorrenteHistorico(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateComHistoricoEx')]
    procedure UpdateUpdateComHistoricoEx(Values: TJSONArray; out ConcorGerado: Integer; GerarHistorico: Boolean; var IdHistoricoAltCC: Integer; AplicacaoOrigemItem: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetIdTipoDoc')]
    function GetIdTipoDoc(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_UpdateObservacoesEx')]
    function UpdateUpdateObservacoesEx(IdsCC: TJSONArray; const Observacao: String): Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteAtendimentoSemVlAtualDevido')]
    function GetContaCorrenteAtendimentoSemVlAtualDevido(IdContribuinte: Integer; AnoExercicioIni: Integer; AnoExercicioFim: Integer; IdTributoImp: Integer; SitDividaItem: Integer; IdUnidadeImob: Integer; IdCadEconomico: Integer; const TextoInSitDivida: String; const TextoNotInSitDivida: String; const TextoInTributo: String; const TextoNotInTributo: String; BuscarTaxas: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParcelasAtendimentoSemVlAtualDevido')]
    function GetParcelasAtendimentoSemVlAtualDevido(IdCCorrente: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_CalculaAtualizacaoPorPlanilha')]
    function UpdateCalculaAtualizacaoPorPlanilha(Data: TJSONArray; DtCalculo: TDateTime; IdTpParcelamento: Integer; CalculaDesconto: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetReceitasGuiaAvulsa')]
    function GetReceitasGuiaAvulsa(IdCCorrenteFisc: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetContaCorrenteGuiaAvulsa')]
    function GetContaCorrenteGuiaAvulsa(ID_CONTRIBUINTE: Integer; ANO_EXERCICIO: Integer; MES_EXERCICIO: Integer; ID_TRIBUTO_IMP: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetBD')]
    function GetBD: String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_Delete')]
    procedure UpdateDelete(LKValues: TJSONArray; Concorrencia: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_Insert')]
    procedure UpdateInsert(Values: TJSONArray; out AutoIncGerado: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_Update')]
    procedure UpdateUpdate(Values: TJSONArray; out ConcorGerado: Integer);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetRecord')]
    function UpdateGetRecord(LKValues: TJSONArray; OpenQrAux: Boolean; NotFoundError: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetRecords')]
    function GetRecords(NotFoundError: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetRecordsLike')]
    function UpdateGetRecordsLike(ParamValues: TJSONArray; NotFoundError: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetLKFieldValues')]
    function GetLKFieldValues(PKFieldValue: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetPKFieldValue')]
    function UpdateGetPKFieldValue(LKFieldValues: TJSONArray): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_IndexInFields')]
    function IndexInFields(const FieldName: String): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_IndexInLkFields')]
    function IndexInLkFields(const FieldName: String): Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_NumNiveis')]
    function NumNiveis: Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_LkFieldsCount')]
    function LkFieldsCount: Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_TabelaEstruturada')]
    function TabelaEstruturada: Boolean;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_PosPkField')]
    function PosPkField: Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_PosAutoIncField')]
    function PosAutoIncField: Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DisplayLabelPlural')]
    function DisplayLabelPlural: String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_DisplayLabelSingular')]
    function DisplayLabelSingular: String;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_FieldsCount')]
    function FieldsCount: Integer;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetTabEstruturada')]
    function GetTabEstruturada(CodTabela: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetRecordPK')]
    function GetRecordPK(PkValue: Integer; NotFoundError: Boolean): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetFilhos')]
    function GetFilhos(Nivel1: Integer; Nivel2: Integer; Nivel3: Integer; Nivel4: Integer; Nivel5: Integer; Nivel6: Integer; Nivel7: Integer; Nivel8: Integer; Nivel9: Integer; Nivel10: Integer): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetFilhosLike')]
    function GetFilhosLike(Nivel1: Integer; Nivel2: Integer; Nivel3: Integer; Nivel4: Integer; Nivel5: Integer; Nivel6: Integer; Nivel7: Integer; Nivel8: Integer; Nivel9: Integer; Nivel10: Integer; const ColumnName: String; const ColumnValue: String): TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetFieldsConfig')]
    function GetFieldsConfig: TJSONArray;
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetTableConfig')]
    procedure GetTableConfig(out NumNiveis: Integer; out IndEstruturada: String; out DisplayLabelSingular: String; out DisplayLabelPlural: String);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetParents')]
    procedure UpdateGetParents(PkValues: TJSONArray; out ParentsStr: TJSONArray; out ParentsIds: TJSONArray);
    [TRoleAuth('ADM, Fiscalizacao_CCorrenteFiscal_GetFilhosEx')]
    function GetFilhosEx(PkValue: Integer): TJSONArray;


  end;
class Fiscalizacao_CCorrenteFiscal extends Controller
{

    /**
    * @Route("/api/legado/Fiscalizacao_CCorrenteFiscal_GetContaCorrente/{IdOrigem}/{TipoOrigem}/{AnoExercicio}/{IdTributoImp}/{SitDividaItem}", name="Fiscalizacao_CCorrenteFiscal_GetContaCorrente")
    * @Method("GET")
    * @Security("has_role('ROLE_USER_SIM')")
    *
    * @ApiDoc(
    *     views = { "fiscalizacao" },
    *     tags = {
    *             "stable" = "#ff0000"
    *     },
    *     resource = true,
    *     description = "",
    *     section = "Fiscalizacao (Legado)",
    *     requirements={
    *                 {"name":"IdOrigem","dataType":"Integer","requirement":"","format":"01234","description":""},
    *                 {"name":"TipoOrigem","dataType":"String","requirement":"","format":"Abc","description":""},
    *                 {"name":"AnoExercicio","dataType":"Integer","requirement":"","format":"01234","description":""},
    *                 {"name":"IdTributoImp","dataType":"Integer","requirement":"","format":"01234","description":""},
    *                 {"name":"SitDividaItem","dataType":"Integer","requirement":"","format":"01234","description":""}
    *     }
    * )
    */

    public function Fiscalizacao_CCorrenteFiscal_GetContaCorrente($IdOrigem, $TipoOrigem, $AnoExercicio, $IdTributoImp, $SitDividaItem)
    {


        $client = new \GuzzleHttp\Client();
        try {
            $answer  = $client->get($this->getParameter('url_service_legado')."/datasnap/rest/TSM_Fiscalizacao_CCorrenteFiscal/GetContaCorrente/".$IdOrigem."/".$TipoOrigem."/".$AnoExercicio."/".$IdTributoImp."/".$SitDividaItem."",
                                     array('auth' => [$this->getUser()->getUserName(), $this->getUser()->getPassword()]));
        }
        catch (Exception $e) {
            echo Psr7\str($e->getRequest());
            if ($e->hasResponse()) {
                echo Psr7\str($e->getResponse());
            }
        }

        $statusCode = $answer->getStatusCode();

        if ($statusCode >= 200 && $statusCode < 300) {
            $json_retorno = (string) $answer->getBody();
        } else {
            throw new MyException("Resposta inválida da api...");
        }

        $response = new Response();
        $response->setContent($json_retorno);
        $response->headers->set('Content-Type', 'application/json');
        return $response;

    }

APIs na IMA

By Rafael Nunes Vieira

APIs na IMA

  • 833