/******************************************************************************/
/***         Generated by IBExpert 2020.4.21.2 04/08/2023 10:20:44          ***/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES WIN1252;

SET CLIENTLIB 'C:\Firebird\Firebird_3_0\WOW64\fbclient.dll';

CREATE DATABASE 'LOCALHOST/3053:D:\Programas\SINS\DADOS\SINSFB3.FDB'
USER 'SYSDBA' PASSWORD '22097475'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1252 COLLATION WIN1252;



/******************************************************************************/
/***                      User defined functions (UDF)                      ***/
/******************************************************************************/

DECLARE EXTERNAL FUNCTION ADDDAY
    TIMESTAMP,
    INTEGER
    RETURNS TIMESTAMP
    ENTRY_POINT 'addDay' MODULE_NAME 'fbudf';


DECLARE EXTERNAL FUNCTION ADDMONTH
    TIMESTAMP,
    INTEGER
    RETURNS TIMESTAMP
    ENTRY_POINT 'addMonth' MODULE_NAME 'fbudf';


DECLARE EXTERNAL FUNCTION BUSCAR_LICENCA

    RETURNS CSTRING(256) FREE_IT
    ENTRY_POINT 'Buscar_Licenca' MODULE_NAME 'Validador_Licenca.dll';


DECLARE EXTERNAL FUNCTION INSERIR_MASCARA
    CSTRING(256),
    CSTRING(256)
    RETURNS CSTRING(256) FREE_IT
    ENTRY_POINT 'Inserir_Mascara' MODULE_NAME 'Formatar_mascara.dll';


DECLARE EXTERNAL FUNCTION PEGAR_MAC_ADDRESS

    RETURNS CSTRING(256) FREE_IT
    ENTRY_POINT 'Pegar_Mac_Address' MODULE_NAME 'Mac_Address.dll';


DECLARE EXTERNAL FUNCTION SERIAL_HD
    CSTRING(256)
    RETURNS CSTRING(256) FREE_IT
    ENTRY_POINT 'Serial_Unidade' MODULE_NAME 'UDF_SystemsGeraes.dll';




/******************************************************************************/
/***                                Domains                                 ***/
/******************************************************************************/

CREATE DOMAIN ABREVIATURA AS
VARCHAR(10)
COLLATE WIN_PTBR;

CREATE DOMAIN BANCO AS
VARCHAR(4);

CREATE DOMAIN BOOLEAN_STR AS
VARCHAR(1);

CREATE DOMAIN CEP AS
CHAR(8);

CREATE DOMAIN CHAVE_STR AS
VARCHAR(20);

CREATE DOMAIN CNAE AS
VARCHAR(18);

CREATE DOMAIN CNPJ AS
VARCHAR(14)
COLLATE WIN_PTBR;

CREATE DOMAIN CODIGO AS
INTEGER;

CREATE DOMAIN CODIGO_BARRAS AS
VARCHAR(44);

CREATE DOMAIN CODIGO_EXTENSO AS
NUMERIC(15,0);

CREATE DOMAIN CODIGO_SINDICAL AS
VARCHAR(20);

CREATE DOMAIN COD_BARRA AS
VARCHAR(120);

CREATE DOMAIN CPF AS
CHAR(11);

CREATE DOMAIN CTPS AS
INTEGER;

CREATE DOMAIN CTPS_SERIE AS
VARCHAR(10);

CREATE DOMAIN DESCRICAO AS
VARCHAR(200);

CREATE DOMAIN DIRETORIO AS
VARCHAR(300);

CREATE DOMAIN EMAIL AS
VARCHAR(300)
COLLATE WIN_PTBR;

CREATE DOMAIN FOTO AS
VARCHAR(12);

CREATE DOMAIN INSCRICAO AS
VARCHAR(15);

CREATE DOMAIN LINHA_DIGITAVEL AS
VARCHAR(70);

CREATE DOMAIN MD5 AS
VARCHAR(50);

CREATE DOMAIN NOME AS
VARCHAR(80);

CREATE DOMAIN NOSSO_NUMERO AS
VARCHAR(30);

CREATE DOMAIN NUMERO AS
INTEGER;

CREATE DOMAIN OBSERVACAO AS
VARCHAR(10000);

CREATE DOMAIN PERCENTUAL AS
DECIMAL(15,3);

CREATE DOMAIN PIS AS
VARCHAR(11);

CREATE DOMAIN QUANTIDADE AS
INTEGER;

CREATE DOMAIN REFERENCIA AS
VARCHAR(10);

CREATE DOMAIN RG AS
VARCHAR(15);

CREATE DOMAIN SENHA AS
VARCHAR(20);

CREATE DOMAIN SEU_NUMERO AS
VARCHAR(30);

CREATE DOMAIN TELEFONE AS
VARCHAR(20);

CREATE DOMAIN UF AS
CHAR(2);

CREATE DOMAIN VALOR AS
NUMERIC(15,2);



/******************************************************************************/
/***                               Generators                               ***/
/******************************************************************************/

CREATE GENERATOR FOLDER_ID_GEN START WITH 0 INCREMENT BY 1;
SET GENERATOR FOLDER_ID_GEN TO 0;

CREATE GENERATOR GEN_ACESSOS START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ACESSOS TO 1;

CREATE GENERATOR GEN_AGENDAMENTO_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_AGENDAMENTO_SERVICO TO 2;

CREATE GENERATOR GEN_AGENDA_DE_HORARIOS_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_AGENDA_DE_HORARIOS_ID TO 0;

CREATE GENERATOR GEN_ARRECADACAO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ARRECADACAO TO 1189490;

CREATE GENERATOR GEN_ARRECADACAO_HISTORICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ARRECADACAO_HISTORICO TO 356709;

CREATE GENERATOR GEN_ASSIS_CONTRIBUINTES_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ASSIS_CONTRIBUINTES_ID TO 0;

CREATE GENERATOR GEN_ASSOCIADO_GRUPO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ASSOCIADO_GRUPO TO 0;

CREATE GENERATOR GEN_ATUALIZACAO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ATUALIZACAO TO 0;

CREATE GENERATOR GEN_AUDITORIA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_AUDITORIA TO 19353;

CREATE GENERATOR GEN_AUDITORIA_DETALHE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_AUDITORIA_DETALHE TO 68958;

CREATE GENERATOR GEN_BACKUP START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_BACKUP TO 413;

CREATE GENERATOR GEN_BACKUP_LISTA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_BACKUP_LISTA TO 1;

CREATE GENERATOR GEN_BORDERO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_BORDERO_ID TO 0;

CREATE GENERATOR GEN_BORDERO_ITENS_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_BORDERO_ITENS_ID TO 0;

CREATE GENERATOR GEN_CAD_CHEQUE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CAD_CHEQUE TO 0;

CREATE GENERATOR GEN_CAIXA_FECHAMENTO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CAIXA_FECHAMENTO_ID TO 0;

CREATE GENERATOR GEN_CAIXA_MOVIMENTACAO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CAIXA_MOVIMENTACAO_ID TO 0;

CREATE GENERATOR GEN_CENSO_BASE_TERRITORIAL_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CENSO_BASE_TERRITORIAL_ID TO 1;

CREATE GENERATOR GEN_COBRANCA_DETALHES_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_COBRANCA_DETALHES_ID TO 5371;

CREATE GENERATOR GEN_COMPROMISSO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_COMPROMISSO TO 0;

CREATE GENERATOR GEN_CONFIG_AGENDAMENTO_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONFIG_AGENDAMENTO_SERVICO TO 0;

CREATE GENERATOR GEN_CONF_HORARIO_AGEND_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONF_HORARIO_AGEND_SERVICO TO 0;

CREATE GENERATOR GEN_CONSULTA_RECEITA_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONSULTA_RECEITA_ID TO 38;

CREATE GENERATOR GEN_CONVENCAO_BASE_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONVENCAO_BASE_ID TO 0;

CREATE GENERATOR GEN_CONVENCAO_SEGMENTO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONVENCAO_SEGMENTO_ID TO 0;

CREATE GENERATOR GEN_CONVENCAO_VENCIMENTOS_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_CONVENCAO_VENCIMENTOS_ID TO 0;

CREATE GENERATOR GEN_DEPENDENTE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_DEPENDENTE TO 0;

CREATE GENERATOR GEN_DEPENDENTE_COMERCIARIO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_DEPENDENTE_COMERCIARIO TO 0;

CREATE GENERATOR GEN_DOCUMENTO_TIPO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_DOCUMENTO_TIPO_ID TO 1;

CREATE GENERATOR GEN_EMAIL START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMAIL TO 0;

CREATE GENERATOR GEN_EMPRESA_CONTATOS_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMPRESA_CONTATOS_ID TO 1;

CREATE GENERATOR GEN_EMPRESA_CONTROLES_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMPRESA_CONTROLES_ID TO 0;

CREATE GENERATOR GEN_EMPRESA_GRUPO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMPRESA_GRUPO_ID TO 3148;

CREATE GENERATOR GEN_EMPRESA_HISTORICO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMPRESA_HISTORICO_ID TO 0;

CREATE GENERATOR GEN_EMPRESA_MUDANCA_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EMPRESA_MUDANCA_ID TO 12978;

CREATE GENERATOR GEN_ENQ_VERIFICACAO_I START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ENQ_VERIFICACAO_I TO 53147;

CREATE GENERATOR GEN_ENTID_SIND_BASE_CID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ENTID_SIND_BASE_CID TO 2628;

CREATE GENERATOR GEN_ENTID_SIND_SEG_CNAE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ENTID_SIND_SEG_CNAE TO 7338;

CREATE GENERATOR GEN_ENT_SINDICAL_ARQUIVOS START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ENT_SINDICAL_ARQUIVOS TO 0;

CREATE GENERATOR GEN_ENT_SINDICAL_ARQUIVOS_DET START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ENT_SINDICAL_ARQUIVOS_DET TO 0;

CREATE GENERATOR GEN_ESPECIALIDADE_MEDICA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ESPECIALIDADE_MEDICA TO 4;

CREATE GENERATOR GEN_EXAME_VALOR START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EXAME_VALOR TO 0;

CREATE GENERATOR GEN_EXCESSAO_CONVENIO_TIPO_SERV START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_EXCESSAO_CONVENIO_TIPO_SERV TO 0;

CREATE GENERATOR GEN_FAA_CONTRIBUINTES_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_FAA_CONTRIBUINTES_ID TO 0;

CREATE GENERATOR GEN_GUIAS_DA_WEB_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_GUIAS_DA_WEB_ID TO 141684;

CREATE GENERATOR GEN_HISTORICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_HISTORICO TO 0;

CREATE GENERATOR GEN_HISTORICO_ASSOCIADO_EMPRESA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_HISTORICO_ASSOCIADO_EMPRESA TO 0;

CREATE GENERATOR GEN_HORARIO_AGENDAMENTO_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_HORARIO_AGENDAMENTO_SERVICO TO 0;

CREATE GENERATOR GEN_ITENS_CHECK_LIST_HOM START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_CHECK_LIST_HOM TO 0;

CREATE GENERATOR GEN_ITENS_CONSULTA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_CONSULTA TO 0;

CREATE GENERATOR GEN_ITENS_CONTAS START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_CONTAS TO 0;

CREATE GENERATOR GEN_ITENS_EXAME START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_EXAME TO 0;

CREATE GENERATOR GEN_ITENS_RESCISAO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_RESCISAO TO 66;

CREATE GENERATOR GEN_ITENS_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_SERVICO TO 0;

CREATE GENERATOR GEN_ITENS_SERVICO_GENERICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_ITENS_SERVICO_GENERICO TO 0;

CREATE GENERATOR GEN_LANCAMENTO_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_LANCAMENTO_SERVICO TO 0;

CREATE GENERATOR GEN_LANCAMENTO_SERVICO_GENERICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_LANCAMENTO_SERVICO_GENERICO TO 0;

CREATE GENERATOR GEN_LOG_ERRO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_LOG_ERRO TO 22841;

CREATE GENERATOR GEN_MENU__RELATORIO_SISTEMA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_MENU__RELATORIO_SISTEMA TO 0;

CREATE GENERATOR GEN_MOVIMENTO_CHEQUE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_MOVIMENTO_CHEQUE TO 0;

CREATE GENERATOR GEN_MUDANCA_ASSOCIADO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_MUDANCA_ASSOCIADO TO 0;

CREATE GENERATOR GEN_PAGAMENTO_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_PAGAMENTO_SERVICO TO 0;

CREATE GENERATOR GEN_PAGAMENTO_SERVICO_GENERICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_PAGAMENTO_SERVICO_GENERICO TO 0;

CREATE GENERATOR GEN_PROCESSAMENTO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_PROCESSAMENTO TO 8380;

CREATE GENERATOR GEN_PROCESSAMENTO_DETALHE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_PROCESSAMENTO_DETALHE TO 1633738;

CREATE GENERATOR GEN_RAIS_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_RAIS_ID TO 0;

CREATE GENERATOR GEN_RECIBO_AVULSO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_RECIBO_AVULSO TO 0;

CREATE GENERATOR GEN_RELATORIO_SISTEMA START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_RELATORIO_SISTEMA TO 0;

CREATE GENERATOR GEN_REMESSA_BANCO_DETALHE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_REMESSA_BANCO_DETALHE TO 148566;

CREATE GENERATOR GEN_REMESSA_BANCO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_REMESSA_BANCO_ID TO 456;

CREATE GENERATOR GEN_RESUMO_PROCESSAMENTO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_RESUMO_PROCESSAMENTO TO 378;

CREATE GENERATOR GEN_SCRIPT_PROCESSADO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SCRIPT_PROCESSADO TO 0;

CREATE GENERATOR GEN_SEGMENTOS_CNAE_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SEGMENTOS_CNAE_ID TO 0;

CREATE GENERATOR GEN_SERVICO_CONCORRENTE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SERVICO_CONCORRENTE TO 0;

CREATE GENERATOR GEN_SERV_CONV_ESPECIALIDADE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SERV_CONV_ESPECIALIDADE TO 0;

CREATE GENERATOR GEN_SINDICAL_CONTRIBUINTES_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SINDICAL_CONTRIBUINTES_ID TO 3;

CREATE GENERATOR GEN_SOCIAL_ASSOCIADOS START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_SOCIAL_ASSOCIADOS TO 10130;

CREATE GENERATOR GEN_STATUS_CHEQUE_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_STATUS_CHEQUE_ID TO 0;

CREATE GENERATOR GEN_TABELAS_OTIMIZADAS START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_TABELAS_OTIMIZADAS TO 374;

CREATE GENERATOR GEN_TELEFONE START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_TELEFONE TO 298403;

CREATE GENERATOR GEN_TIPO_COBRANCA_ONDE_USAR_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_TIPO_COBRANCA_ONDE_USAR_ID TO 3;

CREATE GENERATOR GEN_TIPO_EXAME START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_TIPO_EXAME TO 0;

CREATE GENERATOR GEN_TIPO_TELEFONE_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_TIPO_TELEFONE_ID TO 8;

CREATE GENERATOR GEN_VALOR_ITENS_SERVICO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_VALOR_ITENS_SERVICO TO 0;

CREATE GENERATOR GEN_VERSAO START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_VERSAO TO 12;

CREATE GENERATOR GEN_VOTO_ELETRONICO_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_VOTO_ELETRONICO_ID TO 0;

CREATE GENERATOR GEN_WHATS_LOG_ID START WITH 0 INCREMENT BY 1;
SET GENERATOR GEN_WHATS_LOG_ID TO 0;

CREATE GENERATOR IBE$LOG_TABLES_GEN START WITH 0 INCREMENT BY 1;
SET GENERATOR IBE$LOG_TABLES_GEN TO 0;

CREATE GENERATOR ITEM_ID_GEN START WITH 0 INCREMENT BY 1;
SET GENERATOR ITEM_ID_GEN TO 1;



/******************************************************************************/
/***                           Stored procedures                            ***/
/******************************************************************************/



SET TERM ^ ;

CREATE PROCEDURE AGRUPA_PROCESSAMENTO_DETALHE
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE AJUSTE_CATAGUASES
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE ENDERECO (
    TABELA VARCHAR(80),
    CONDICAO_SQL_WHERE VARCHAR(10000))
RETURNS (
    ENDERECO VARCHAR(500),
    NOME VARCHAR(200),
    QTE INTEGER,
    STATUS VARCHAR(1),
    CNPJ VARCHAR(14),
    CIDADE VARCHAR(80),
    CODIGO INTEGER,
    NASCIMENTO DATE)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE FECHAMENTO_CAIXA (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    FILIAL INTEGER)
RETURNS (
    MOVIMENTO_CAIXA NUMERIC(15,0),
    DESCRICAO_PAGAMENTO VARCHAR(5000),
    COD_USUARIO INTEGER,
    NOME_USUARIO VARCHAR(80),
    COD_FILIAL INTEGER,
    NOME_FILIAL VARCHAR(80),
    FORMA_PAGOU VARCHAR(80),
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    CODIGO_GUIA NUMERIC(15,0),
    ENTRADA_SAIDA VARCHAR(80),
    VALOR_AVISTA NUMERIC(15,2),
    VALOR_APRAZO NUMERIC(15,2),
    CAIXA_BANCO VARCHAR(1),
    OBS VARCHAR(5000))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJSUTA_IMPORTACA_CAIXA
RETURNS (
    REFERENCIA_ASSOCIATIVA CHAR(6),
    COD_ARRECADACAO INTEGER,
    COMPLEMENTAR CHAR(2),
    COMPETENCIA CHAR(4),
    ASSOCIADO INTEGER,
    VALOR_ARRECADACAO NUMERIC(15,2),
    COD_ASSOCIATIVA INTEGER,
    MOVIMENTO_CAIXA NUMERIC(15,0))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJUSTA_BOLETOS_ASSOCIATIVA
RETURNS (
    COD_ARRECADACAO INTEGER,
    DATA_PGTO TIMESTAMP,
    COMPLEMENTAR INTEGER,
    COMPETENCIA INTEGER,
    REFERENCIA_ASSOCIATIVA VARCHAR(10),
    MATRICULA INTEGER,
    MOVIEMNTO_CAIXA INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJUSTA_ERROPROC_PROC
RETURNS (
    COD_PROCESSAMENTO INTEGER,
    COD_ERRO_PROCESSAMENTO INTEGER,
    ARQUIVO VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJUSTA_IMPORTA_GUIAS (
    COD_TIPO_COBRANCA_SINDICAL INTEGER,
    COD_TIPO_COBRANCA_FAA_MENSAL INTEGER,
    COD_TIPO_COBRANCA_FAA_ANUAL INTEGER,
    COD_TIPO_COBRANCA_ASSOCIATIVA INTEGER,
    COD_TIPO_COBRANCA_PLANO_BASICO INTEGER)
RETURNS (
    TIPO_COBRANCA VARCHAR(80),
    NOSSO_NUMERO VARCHAR(30),
    COD_ARRECADACAO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJUSTA_PROCESSAMENTO_DET
RETURNS (
    MULTA_JUROS VARCHAR(20),
    LINHA_T VARCHAR(1000),
    LINHA_U VARCHAR(1000))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_AJUSTA_VINCULO_COBRANCA
RETURNS (
    DETALHE_COD_COBRANCA_DETALHE NUMERIC(15,0),
    DETALHE_COD_ARRECADACAO NUMERIC(15,0),
    DETALHE_COMPETENCIA INTEGER,
    DETALHE_COMPLEMENTAR INTEGER,
    DETALHE_COD_TABELA_RELACIONADA VARCHAR(80),
    DETALHE_TABELA_RELACIONADA VARCHAR(80),
    DETALHE_COD_TIPO_COBRANCA INTEGER,
    DETALHE_EXCLUIDA VARCHAR(10),
    ARRECADACAO_COD_ARRECADACAO VARCHAR(44))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ANALISA_PROCES_DETALHE
RETURNS (
    RAZAO_SOCIAL VARCHAR(80),
    CNPJ VARCHAR(14),
    CONVENIO VARCHAR(80),
    NUMERO_GUIA VARCHAR(80),
    DATA_VENCIMENTO DATE,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_DOCUMENTO NUMERIC(15,2),
    DATA_CREDITO DATE,
    VALOR_CREDITO NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    FORMA_ARRECADACAO VARCHAR(10),
    TIPO_PAGAMENTO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_APURA_RECEITAS (
    INICIO DATE,
    FIM DATE)
RETURNS (
    TOTAL_JUROS NUMERIC(15,2),
    CREDITO_FEDERACAO NUMERIC(15,2),
    CREDITO_CONFEDERACAO NUMERIC(15,2),
    CREDITO_MTE NUMERIC(15,2),
    TOTAL_TARIFA NUMERIC(15,2),
    TOTAL_PAGAMENTO NUMERIC(15,2),
    TOTAL_CREDITO NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    TIPO_ENTRADA VARCHAR(80),
    TOTAL_EXTRATO NUMERIC(15,2),
    CONSOLIDADO VARCHAR(1),
    QTE_GUIAS INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_APURA_RECEITAS_DIA (
    TIPO_RECOLHIMENTO VARCHAR(20),
    INICIO DATE,
    FIM DATE)
RETURNS (
    TOTAL_CREDITO_SIMPLES NUMERIC(15,2),
    DATA_CREDITO DATE,
    TOTAL_PAGAMENTO NUMERIC(15,2),
    TOTAL_JUROS NUMERIC(15,2),
    TOTAL_CREDITO NUMERIC(15,2),
    CREDITO_FEDERACAO NUMERIC(15,2),
    CREDITO_CONFEDERACAO NUMERIC(15,2),
    CREDITO_MTE NUMERIC(15,2),
    TOTAL_TARIFA NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    TIPO_ENTRADA VARCHAR(80),
    TOTAL_EXTRATO NUMERIC(15,2),
    CONSOLIDADO VARCHAR(1),
    QTE_GUIAS INTEGER,
    DIRETA_INDIRETA VARCHAR(10))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ARRECADACAO_GUIAS (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    EMPRESAS_ATIVAS INTEGER,
    PERIODO VARCHAR(80),
    TIPO_GUIA VARCHAR(40),
    QTD_GUIAS_EMITIDAS INTEGER,
    QTD_GUIAS_PAGAS INTEGER,
    VALOR_GUIAS_PAGAS NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    PERCENTUAL_RECEBIDO DECIMAL(15,3),
    PERCENTUAL_COBRAR DECIMAL(15,3),
    CONSOLIDADDO_COM_EXTRATO VARCHAR(10),
    GUIAS_SEM_IDENTIFICACAO INTEGER,
    VALOR_EXTRATO NUMERIC(15,2),
    CIDADE VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ARRECADACAO_REMOVE_DETALHE (
    COD_ARRECADACAO_DETALHE INTEGER,
    COD_ARRECADACAO INTEGER,
    COD_ARRECADACAO_VINCULADO INTEGER)
RETURNS (
    EXCLUIDO VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ASSIST_ANUAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ASSIST_MENSAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CAIXA_MOVIMENTO (
    SQL_WHERE VARCHAR(5000))
RETURNS (
    COD_PLANO_CONTA INTEGER,
    COD_MOVIMENTO_CAIXA NUMERIC(15,0),
    COD_USUARIO_LANCAMENTO INTEGER,
    COD_FILIAL INTEGER,
    COD_CONTA_BANCARIA VARCHAR(10),
    COD_CENTRO_CUSTO INTEGER,
    COD_ESTORNO INTEGER,
    COD_FECHAMENTO INTEGER,
    DATA_CAD DATE,
    HORA_CAD TIME,
    OBS VARCHAR(5000),
    ENTRADA_SAIDA VARCHAR(10),
    DATA_MOVIMENTACAO DATE,
    VALOR_MOVIMENTO NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    PLANO_CONTA_DESCRICAO VARCHAR(80),
    CENTRO_CUSTO_DESCRICAO VARCHAR(80),
    ESTORNO_DATA DATE,
    ESTORNO_MOTIVO VARCHAR(5000),
    DESCRICAO_LANCAMENTO VARCHAR(80),
    COD_FORNECEDOR VARCHAR(20))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CALCULA_IDADE (
    DATA_ATUAL DATE,
    DATA_NASC DATE)
RETURNS (
    IDADE VARCHAR(100),
    ANO_IDADE INTEGER,
    MES_IDADE INTEGER,
    DIA_IDADE INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CALCULA_RATEIO (
    VALOR_ARRECADADO NUMERIC(15,2),
    CODIGO_SINDICAL VARCHAR(30))
RETURNS (
    VALOR_DA_GUIA NUMERIC(15,2),
    VALOR_SINDICATO NUMERIC(15,2),
    VALOR_FEDERACAO NUMERIC(15,2),
    VALOR_CONFEDERACAO NUMERIC(15,2),
    VALOR_MINIST_TRABALHO NUMERIC(15,2),
    COD_REPASSE_DEVERGENTE VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CALCULA_VALOR_FUNCIONARIO (
    COMPETENCIA INTEGER,
    NUMERO_EMPREGADOS INTEGER,
    COD_TIPO_COBRANCA INTEGER)
RETURNS (
    TOTAL_FUNCIONARIO INTEGER,
    VALOR_SALARIO NUMERIC(15,2),
    VALOR_FINAL NUMERIC(15,3),
    TIPO_CALCULO VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CLUBE_ASSOCIADO
RETURNS (
    MATRICULA INTEGER,
    NOME VARCHAR(80),
    CATEGORIA VARCHAR(80),
    LIBERADO VARCHAR(1),
    MOTIVO_BLOQUEIO VARCHAR(255),
    CODIGO_BARRA VARCHAR(120),
    FOTO VARCHAR(80),
    CONVITE VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_COBRANCA_DADOS_CLIENTE (
    COD_COBRANCA INTEGER)
RETURNS (
    CPF_CNPJ VARCHAR(14),
    NOME VARCHAR(200),
    TELE1 VARCHAR(20),
    TELE2 VARCHAR(20),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_CEP CHAR(8),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE_COD_IBGE INTEGER,
    ENDERECO_COMPLETO VARCHAR(200),
    EMAIL VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CONFEDERATIVA_AGRUPADA
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE PROC_CONTA_BANC_MOV_DETALHADO
RETURNS (
    CONTA_BANCARIA_DATA_SALDO DATE,
    CONTA_BANCARIA_SALDO_INICIAL NUMERIC(15,2),
    CONTA_BANCARIA_CODIGO VARCHAR(10),
    CONTA_BANCARIA_DESCRICAO VARCHAR(80),
    VALOR_REALIZACAO NUMERIC(15,2),
    DATA_REALIZACAO DATE,
    ENTRADA_SAIDA VARCHAR(1),
    DESCRICAO VARCHAR(10000),
    SALDO_PARCIAL NUMERIC(15,2),
    VALOR_ENTRADA NUMERIC(15,2),
    VALOR_SAIDA NUMERIC(15,2),
    COD_PLANO_CONTA INTEGER,
    PLANO_CONTA_DESCRITIVO VARCHAR(200),
    CODIGO_DESCRITIVO VARCHAR(80),
    FORMA_PAGAMENTO VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_CONTA_BANC_MOV_FORMA_PGTO (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    CONTA_BANCARIA_CODIGO VARCHAR(20) COLLATE WIN_PTBR)
RETURNS (
    DESCRICAO VARCHAR(80),
    SALDO_ANTERIOR NUMERIC(15,2),
    ENTRADA NUMERIC(15,2),
    SAIDA NUMERIC(15,2),
    SALDO_ATUAL NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_DADOS_PARA_BOLETO (
    CODIGO_ARRECADACAO INTEGER)
RETURNS (
    COD_ARRECADACAO INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    COD_TIPO_COBRANCA INTEGER,
    COD_ARRECADACAO_ACORDO INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    SACADO_CODIGO VARCHAR(20),
    SACADO_CPF_CNPJ VARCHAR(14),
    SACADO_NOME VARCHAR(200),
    SACADO_ENDERECO VARCHAR(80),
    SACADO_NUMERO VARCHAR(80),
    SACADO_COMPLEMENTO VARCHAR(80),
    SACADO_BAIRRO VARCHAR(80),
    SACADO_CEP CHAR(8),
    SACADO_CIDADE VARCHAR(80),
    SACADO_UF VARCHAR(200),
    SACADO_TELEFONE VARCHAR(20),
    SACADO_CONTABILIDADE VARCHAR(5000),
    COD_CNAE VARCHAR(18),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    EXERCICIO VARCHAR(10),
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_DO_DOCUMENTO NUMERIC(15,2),
    VALOR_A_PAGAR NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    OBS VARCHAR(5000),
    MULTA_JUROS_AUTOMATICO VARCHAR(1),
    COMPETENCIA VARCHAR(10),
    DADOS_EMPRESA VARCHAR(500),
    DIAS_CALCULO_JUROS INTEGER,
    COD_BANCO INTEGER,
    PADRAO_BANCARIO VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_DEMOSTRATIVO_PLANO_CONTA (
    SQL_WHERE VARCHAR(5000))
RETURNS (
    VALOR_PAGAMENTO NUMERIC(15,2),
    CODIGO_DESCRITIVO VARCHAR(80),
    DESCRICAO_PLANO_CONTA VARCHAR(80),
    COD_PLANO_CONTA INTEGER,
    ENTRADA_SAIDA_PLANO_CONTA CHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_DETALHE_COBRANCA (
    COD_COBRANCA NUMERIC(15,0))
RETURNS (
    TIPO_GUIA VARCHAR(200),
    VALOR NUMERIC(15,2),
    DATA_VENC DATE,
    DATA_EMISSAO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COD_GUIA NUMERIC(15,0),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    ACRESCIMO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_ENQUADRAMENTO_ENTIDADE (
    CNAE_INPUT VARCHAR(18),
    MUNICIPIO_INPUT INTEGER)
RETURNS (
    ENTIDADE_CODIGO INTEGER,
    ENTIDADE_NOME VARCHAR(200),
    ENTIDADE_NOME_FANTASIA VARCHAR(80),
    ENTIDADE_CIDADE VARCHAR(80),
    ENTIDADE_TELEFONE VARCHAR(10),
    CNAE_CODIGO VARCHAR(18),
    CNAE_ATIVIDADE VARCHAR(5000),
    BASE_DESCRICAO VARCHAR(200),
    BASE_CIDADE VARCHAR(200),
    BASE_CIDADE_IBGE INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_FILIACAO_ENTIDADE (
    COD_ENTIDADE INTEGER,
    FILIACAO_AGRUPADA BOOLEAN_STR)
RETURNS (
    CODIGO_SINDICAL VARCHAR(20),
    TIPO VARCHAR(80),
    RAZAO_SOCIAL VARCHAR(200),
    NOME_FANTASIA VARCHAR(200),
    FILIACAO_LINHA_UNICA VARCHAR(200))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GRAU_FILIACAO_ENTIDADE (
    COD_SINDICAL VARCHAR(80))
RETURNS (
    COD_ENTIDADE_SINDICAL INTEGER,
    TIPO VARCHAR(80),
    RAZAO_SOCIAL VARCHAR(200))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GRAVA_ERRO_PROCESS_GUIA (
    NOSSO_NUMERO VARCHAR(30),
    VALOR_GUIA NUMERIC(15,2),
    VALOR_PAGO NUMERIC(15,2),
    DATA_PAGAMENTO DATE,
    DATA_LANCAMENTO DATE,
    TIPO VARCHAR(80),
    DATA_VENCIMENTO DATE,
    OBS VARCHAR(5000),
    ARQUIVO VARCHAR(80),
    CONVENIO VARCHAR(80),
    CNPJ VARCHAR(14),
    CODIGO_ERRO INTEGER,
    LINHA VARCHAR(255),
    TARIFA NUMERIC(15,2),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    SEU_NUMERO VARCHAR(30))
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE PROC_GRAVA_LOG_ERRO (
    COMPONENTE_EM_FOCO VARCHAR(40),
    FORMULARIO VARCHAR(40),
    USUARIO VARCHAR(80),
    COMPUTADOR VARCHAR(40),
    LINHA_DO_ERRO INTEGER,
    MENSAGEM_ERRO VARCHAR(2000),
    STATUS_TABELA_PRINCIPAL VARCHAR(40),
    COD_FILIAL INTEGER)
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE PROC_GUIA_ARREC_NAO_GERADA (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    COD_TIPO_COBRANCA INTEGER,
    TABELA VARCHAR(80),
    CODIGO_TABELA VARCHAR(80))
RETURNS (
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    COD_CONVENIO_COBRANCA INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_COBRANCA (
    INPUT_TABELA_RELACIONADA VARCHAR(80),
    INPUT_COD_RELACIONADA VARCHAR(80),
    DATA_VENCIMENTO_INICIO DATE,
    DATA_VENCIMENTO_FIM DATE)
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_TIPO_COBRANCA INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    COD_LOCAL_EMISSAO INTEGER,
    CODIGO_DE_BARRAS VARCHAR(44),
    COD_TABELA_RELACIONADA VARCHAR(80),
    NAO_GERAR_SE_JA_EXISTIR VARCHAR(1),
    TABELA_RELACIONADA VARCHAR(80),
    LINHA_DIGITAVEL VARCHAR(70),
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200),
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_CEP CHAR(8),
    ENDERECO_COMPLETO VARCHAR(10000),
    TELEFONE_1 VARCHAR(40),
    TELEFONE_2 VARCHAR(40),
    COD_CNAE VARCHAR(30),
    EMAIL VARCHAR(10000),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_ENDERECO_LOGRADOU VARCHAR(80),
    CONTABILIDADE_ENDERECO_NUMERO VARCHAR(80),
    CONTABILIDADE_ENDERECO_COMPLEME VARCHAR(80),
    CONTABILIDADE_ENDERECO_BAIRRO VARCHAR(80),
    CONTABILIDADE_ENDERECO_CIDADE VARCHAR(80),
    CONTABILIDADE_ENDERECO_UF CHAR(2),
    CONTABILIDADE_ENDERECO_CEP CHAR(10),
    CONTABILIDADE_EMAIL VARCHAR(10000),
    CONTABILIDADE_TELEFONE_1 VARCHAR(40),
    CONTABILIDADE_TELEFONE_2 VARCHAR(40),
    PERIODICIDADE_TIPO_COBRANCA VARCHAR(80),
    COD_COBRANCA_DETALHE NUMERIC(15,0),
    NUMERO_EMPREGADOS INTEGER,
    ULTIMA_COMPETENCIA_PAGA INTEGER,
    ULTIMA_COMPETENCIA_PAGA_VALOR NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_DETALHE (
    COD_ARRECADACAO_PRINCIPAL INTEGER,
    COD_ARRECADACAO_VINCULADA INTEGER,
    COD_USUARIO INTEGER,
    DESCRICAO VARCHAR(200),
    DATA_VENC DATE,
    VALOR NUMERIC(15,2),
    OBS_SISTEMA VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000))
RETURNS (
    COD_ARRECADACAO_DETALHE INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_GERAR (
    COD_CONVENIO_COBRANCA INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    COD_LOCAL_EMISSAO INTEGER,
    COD_USUARIO_EMISSAO INTEGER,
    COD_TIPO_COBRANCA INTEGER,
    COD_TABELA_RELACIONADA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_A_PAGAR NUMERIC(15,2),
    OBS_SISTEMA VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000),
    FLAG CHAR(5),
    BASE_DE_CALCULO NUMERIC(15,2),
    COD_ARRECADACAO_COMP_VALOR NUMERIC(15,0),
    CODIGO_DE_BARRAS VARCHAR(50),
    NAO_GERAR_SE_JA_EXISTIR VARCHAR(1))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    GERA_REMESSA VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_INFSACADO (
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80))
RETURNS (
    CODIGO_CHAVE VARCHAR(80),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    CPF_CNPJ VARCHAR(80),
    CNPJ_EMPRESA_ASSOCIADO VARCHAR(14),
    CPF_CNPJ_CONTABILIDADE VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_LOCALIZAR (
    LINHA_DIGITAVEL VARCHAR(70),
    CODIGO_DE_BARRA VARCHAR(44),
    COD_CHAVE_ARRECADACAO NUMERIC(15,0),
    SEU_NUM VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    CODIGO_CONVENIO_COBRANCA INTEGER,
    VALOR_PAGO NUMERIC(15,2))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_TIPO_COBRANCA INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    QUANTIDADE_GUIAS_ENCONTRADAS INTEGER,
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    DESCRICAO_CONVENIO_COBRANCA VARCHAR(80),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAOSOCIAL VARCHAR(200),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    SEU_NUMERO VARCHAR(30),
    DATA_VENCIMENTO DATE,
    DATA_EMISSAO DATE,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_A_PAGAR NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COD_BARRA VARCHAR(44),
    CNPJ_EMPRESA_ASSOCIADO VARCHAR(14),
    CPF_CNPJ_CONTABILIDADE VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_GUIA_ARRECADACAO_RECEBER (
    COD_ARRECADACAO INTEGER,
    COD_FORMA_ARRECADACAO VARCHAR(10),
    COD_FORMA_PAGAMENTO INTEGER,
    COD_USUARIO_PAGAMENTO INTEGER,
    COD_CAIXA_MOVIMENTACAO INTEGER,
    COD_FILIAL_PAGAMENTO INTEGER,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_REPASSE_FEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_CONFEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_OUTROS NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    VALOR_MULTA NUMERIC(15,2),
    VALOR_JUROS NUMERIC(15,2),
    VALOR_OUTRAS_DESPESAS NUMERIC(15,2),
    VALOR_OUTROS_CREDITOS NUMERIC(15,2),
    VALOR_IOF NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    RECEBIMENTO_BANCARIO_BANCO INTEGER,
    RECEBIMENTO_BANCARIO_AGENCIA INTEGER,
    RECEBIMENTO_BANCARIO_COD_OCORRE INTEGER,
    RECEBIMENTO_BANCARIO_DESC_OCORR VARCHAR(80),
    OBS_PAGAMENTO VARCHAR(5000),
    OBS_SISTEMA VARCHAR(5000),
    FLAG VARCHAR(5),
    HASH_CODE VARCHAR(80),
    DATA_CREDITO DATE,
    RECEBIMENTO_BANCARIO VARCHAR(1),
    COD_CONTA_BANCARIA_MOVIMENTO VARCHAR(10),
    VALOR_DESCONTO NUMERIC(15,2))
AS
BEGIN
  EXIT;
END^





CREATE PROCEDURE PROC_GUIAS (
    VERIFICA_GUIAS_NAO_GERADAS VARCHAR(1),
    SQLWHERE VARCHAR(5000),
    SQL_WHERE_GUIAS_NAO_GERADAS VARCHAR(5000))
RETURNS (
    COMENTARIO VARCHAR(200),
    TIPO VARCHAR(20),
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_HISTORICO_SITUACAO_SOCIO (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    QUANTIDADE INTEGER,
    VALOR INTEGER,
    NOVO VARCHAR(80),
    ANTIGO VARCHAR(80),
    COD_STATUS_ANTIGO INTEGER,
    COD_STATUS_NOVO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_IMPORTA_GUIAS (
    COD_TIPO_COBRANCA_SINDICAL INTEGER,
    COD_TIPO_COBRANCA_FAA_MENSAL INTEGER,
    COD_TIPO_COBRANCA_FAA_ANUAL INTEGER,
    COD_TIPO_COBRANCA_ASSOCIATIVA INTEGER,
    COD_TIPO_COBRANCA_PLANO_BASICO INTEGER)
RETURNS (
    COD_ARRECADACAO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_IMPORTA_PGTO_SERVICO
RETURNS (
    CODIGO INTEGER,
    COD_LANCAMENTO_SERVICO INTEGER,
    COD_USUARIO_LANCAMENTO INTEGER,
    COD_USUARIO_BAIXA INTEGER,
    COD_FORMA_PAGAMENTO INTEGER,
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    DATA_BAIXA DATE,
    VALOR_BAIXA NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    OUTROS NUMERIC(15,2),
    DATA_LANCAMENTO DATE,
    MOVIMENTO_CAIXA NUMERIC(15,0),
    DESCONTO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_LISTA_ARRECADACAO (
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_VINCULO_ARRECADACAO INTEGER,
    DATA_VENCIMENTO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    VALOR_A_PAGAR NUMERIC(15,2),
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    SEU_NUMERO VARCHAR(30),
    DATA_EMISSAO DATE,
    COD_CONVENIO_COBRANCA INTEGER,
    DESCRICAO_CONVENIO_COBRANCA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER,
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    COMPLEMENTOVALOR VARCHAR(5),
    ERRO_PROCESSAMENTO VARCHAR(80),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_REPASSE_FEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_CONFEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_OUTROS NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    VALOR_MULTA NUMERIC(15,2),
    VALOR_JUROS NUMERIC(15,2),
    EXCLUIDA VARCHAR(1),
    OBS_PAGAMENTO VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000),
    HASH_CODE VARCHAR(80),
    DATA_CREDITO DATE,
    PADRAO_BANCARIO VARCHAR(80),
    GUIA_REGISTRADA VARCHAR(1),
    EXISTE_GUIA_VINCULADA VARCHAR(1),
    COD_COBRANCA_DETALHE INTEGER,
    COD_ACORDO INTEGER,
    LINHA_DIGITAVEL VARCHAR(70),
    CODIGO_DE_BARRAS VARCHAR(44))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_LOCALIZA_ENTIDADE (
    COD_SINDICAL VARCHAR(20),
    GRAU_ENTIDADE VARCHAR(80),
    CNPJ VARCHAR(14))
RETURNS (
    RAZAO_SOCIAL VARCHAR(200),
    COD_ENTIDADE_SINDICAL INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_LOCALIZA_GUIAS_DA_WEB (
    COD_BARRA VARCHAR(44),
    CODIGO_CONVENIO_COBRANCA INTEGER,
    SEU_NUMERO VARCHAR(30),
    GUIA_VENCIMENTO DATE,
    GUIA_VALOR NUMERIC(15,2),
    CODIGO BIGINT)
RETURNS (
    CODIGO_CHAVE BIGINT,
    DATA_GERACAO DATE,
    DATA_VENCIMENTO DATE,
    VALOR NUMERIC(15,2),
    SEU_NUM VARCHAR(30),
    NOSSO_NUM VARCHAR(80),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAOSOCIAL VARCHAR(200),
    COMPETENCIA SMALLINT,
    COMPLEMENTAR SMALLINT,
    COD_GUIA_NA_WEB INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    QUANTIDADE_GUIAS INTEGER,
    TIPO_GUIA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    CONVENIO_COBRANCA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER,
    CODIGO_BARRA VARCHAR(44),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF VARCHAR(2),
    ENDERECO_CEP VARCHAR(8),
    CNAE VARCHAR(20),
    OBSERVACAO VARCHAR(1000))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_MAIOR_DATA (
    DATA1 DATE,
    DATA2 DATE,
    DATA3 DATE)
RETURNS (
    DATA_MAIOR DATE)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RELAT_ATENDIMENTO
RETURNS (
    ATENDIMENTO OBSERVACAO,
    TEMPO TIME,
    FIM TIME,
    INICIO TIME,
    COD_STATUS CODIGO,
    TIPO_ATENDIMENTO_DESC DESCRICAO,
    TIPO_ATENDIMENTO_COD CODIGO,
    USUARIO_DESC DESCRICAO,
    USUARIO_COD CODIGO,
    HORA TIME,
    DATA DATE,
    LINK_CODIGO CHAVE_STR,
    LINK_DESCRICAO DESCRICAO,
    COD_ATENDIMENTO CODIGO,
    TABELA_RELACIONADA DESCRICAO)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RELAT_COBRANCA
RETURNS (
    COBRANCA_COD_COBRANCA NUMERIC(15,2),
    COBRANCA_COD_USUARIO INTEGER,
    COBRANCA_COD_STATUS INTEGER,
    COBRANCA_OBS VARCHAR(10000),
    COBRANCA_STATUS_DESCRICAO VARCHAR(80),
    COBRANCA_DATA_INICIO_PROCESSO DATE,
    COBRANCA_DATA_ENCERRAMENTO DATE,
    COBRANCA_DESCRICAO VARCHAR(80),
    COBRANCA_VALOR_FINAL NUMERIC(15,2),
    COBRANCA_DESCONTO_FINAL_VALOR NUMERIC(15,2),
    COBRANCA_ACRESCIMO_FINAL NUMERIC(15,2),
    COBRANCA_JUROS_FINAL NUMERIC(15,2),
    COBRANCA_MULTA_FINAL NUMERIC(15,2),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    COBRANCA_TABELA_RELACIONADA VARCHAR(80),
    COBRANCA_COD_TABELA_RELACIONADA VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_REMOVE_ARRECADACAO_DUPLICA
RETURNS (
    ENCON_COD_ARRECADACAO NUMERIC(15,0))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RESUMO_ATENDIMENTOS_SERVIC (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    QTD_ATENDIMENTOS INTEGER,
    QTD_ATENDIMENTOS_PAGOS INTEGER,
    QTD_ATENDIMENTOS_GRATIS INTEGER,
    VALOR_TOTAL_ATENDIMENTOS NUMERIC(15,2),
    QTD_ASSOCIADOS INTEGER,
    QTD_DEPENDENTES INTEGER,
    QTD_COMERCIARIOS INTEGER,
    VALOR_ASSOCIADOS NUMERIC(15,2),
    VALOR_DEPENDENTES NUMERIC(15,2),
    VALOR_COMERCIARIOS NUMERIC(15,2),
    QTD_PROCEDIMENTOS_ASSOCIADOS INTEGER,
    QTD_PROCEDIMENTOS_DEPENDENTES INTEGER,
    QTD_PROCEDIMENTOS_COMERCIARIOS INTEGER,
    QTD_ATEND_GRATIS_ASSOCIADOS INTEGER,
    QTD_ATEND_GRATIS_DEPENDENTES INTEGER,
    QTD_ATEND_GRATIS_COMERCIARIOS INTEGER,
    QTD_ATEND_PAGAS_ASSOCIADOS INTEGER,
    QTD_ATEND_PAGAS_DEPENDENTES INTEGER,
    QTD_ATEND_PAGAS_COMERCIARIOS INTEGER,
    QTD_ASSOCIADO_SEM_PROCEDIMENTO INTEGER,
    QTD_DEPENDENTE_SEM_PROCEDIMENTO INTEGER,
    QTD_COMERC_SEM_PROCEDIMENTO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RESUMO_HOMOLOGACAO (
    DATA_INI_HOMOLOGACAO DATE,
    DATA_FIM_HOMOLOGACAO DATE)
RETURNS (
    QUANTIDADE INTEGER,
    MENORES_18ANOS INTEGER,
    MAIORES_18ANOS INTEGER,
    FEMININO INTEGER,
    MASCULINO INTEGER,
    OUTROS_SEXOS INTEGER,
    MENOS_DE_1ANO_SERVICO INTEGER,
    SERVICO_1ANO INTEGER,
    SERVICO_2ANOS INTEGER,
    SERVICO_3ANOS INTEGER,
    SERVICO_4ANOS INTEGER,
    SERVICO_5ANOS INTEGER,
    SERVICO_6ANOS INTEGER,
    SERVICO_7ANOS INTEGER,
    SERVICO_8ANOS INTEGER,
    SERVICO_9ANOS INTEGER,
    SERVICO_10ANOS INTEGER,
    SERVICO_11ANOS INTEGER,
    SERVICO_12ANOS INTEGER,
    SERVICO_13ANOS INTEGER,
    SERVICO_14ANOS INTEGER,
    MAIS_DE_15ANOS_SERVICO INTEGER,
    AVISO_IDENIZADO INTEGER,
    AVISO_DESCONTADO INTEGER,
    AVISO_TRABALHADO INTEGER,
    TOTAL_BRUTO NUMERIC(15,2),
    TOTAL_DESCONTOS NUMERIC(15,2),
    TOTAL_LIQUIDO NUMERIC(15,2),
    CAUSA_AFASTAMENTO VARCHAR(80),
    QTD_CAUSA_AFASTAMENTO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RESUMO_HOMOLOGACAO_FILIAL (
    DATA_INI_HOMOLOGACAO DATE,
    DATA_FIM_HOMOLOGACAO DATE,
    COD_FILIAL INTEGER)
RETURNS (
    QUANTIDADE INTEGER,
    MENORES_18ANOS INTEGER,
    MAIORES_18ANOS INTEGER,
    FEMININO INTEGER,
    MASCULINO INTEGER,
    OUTROS_SEXOS INTEGER,
    MENOS_DE_1ANO_SERVICO INTEGER,
    SERVICO_1ANO INTEGER,
    SERVICO_2ANOS INTEGER,
    SERVICO_3ANOS INTEGER,
    SERVICO_4ANOS INTEGER,
    SERVICO_5ANOS INTEGER,
    SERVICO_6ANOS INTEGER,
    SERVICO_7ANOS INTEGER,
    SERVICO_8ANOS INTEGER,
    SERVICO_9ANOS INTEGER,
    SERVICO_10ANOS INTEGER,
    SERVICO_11ANOS INTEGER,
    SERVICO_12ANOS INTEGER,
    SERVICO_13ANOS INTEGER,
    SERVICO_14ANOS INTEGER,
    MAIS_DE_15ANOS_SERVICO INTEGER,
    AVISO_IDENIZADO INTEGER,
    AVISO_DESCONTADO INTEGER,
    AVISO_TRABALHADO INTEGER,
    TOTAL_BRUTO NUMERIC(15,2),
    TOTAL_DESCONTOS NUMERIC(15,2),
    TOTAL_LIQUIDO NUMERIC(15,2),
    CAUSA_AFASTAMENTO VARCHAR(80),
    QTD_CAUSA_AFASTAMENTO INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_RESUMO_PGTO_SEMESTRE
RETURNS (
    SINDICATO_CODIGO INTEGER,
    SINDICATO_NOME VARCHAR(200),
    SINDICATO_COD_REPASSE_FED VARCHAR(10),
    SINDICATO_COD_SINDICAL VARCHAR(20),
    SINDICATO_CNPJ INTEGER,
    SEMESTRE_1_2015 NUMERIC(15,2),
    SEMESTRE_2_2015 NUMERIC(15,2),
    SEMESTRE_1_2016 NUMERIC(15,2),
    SEMESTRE_2_2016 NUMERIC(15,2),
    SEMESTRE_1_2017 NUMERIC(15,2),
    SEMESTRE_2_2017 NUMERIC(15,2),
    SEMESTRE_1_2018 NUMERIC(15,2),
    SEMESTRE_2_2018 NUMERIC(15,2),
    FEDERACAO_NOME VARCHAR(200),
    FEDERACAO_COD_SINDICAL VARCHAR(20),
    FEDERACAO_CNPJ VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_SINDICAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_SITUACAO_MENSALIDADE_ASSOC (
    COD_ASSOCIADO_NULL_P_TODOS INTEGER)
RETURNS (
    INICIO_COBRANCA DATE,
    CODIGO_ASSOCIADO INTEGER,
    NOME VARCHAR(80),
    SEXO VARCHAR(10),
    DATA_CADASTRO DATE,
    DATA_ADMISSAO DATE,
    DATA_DEMISSAO DATE,
    NASCIMENTO DATE,
    COD_TIPO_SOCIO INTEGER,
    TIPO_SOCIO_DESCRICAO VARCHAR(80),
    COD_SITUACAO INTEGER,
    SITUACAO_DESCRICAO VARCHAR(80),
    TOTAL_MENSALIDADE_PAGA INTEGER,
    ULTIMA_MENSALIDADE VARCHAR(10),
    VALOR_ULTIMA_MENSALIDADE NUMERIC(15,2),
    MENSALIDADE_REFERENCIA INTEGER,
    TOTAL_MENS_ATRASADA INTEGER,
    COBRA_MES_INGRESSO VARCHAR(1),
    PAGA_MENSALIDADE VARCHAR(1),
    EMPRESA_ASSOCIADO VARCHAR(14),
    DATA_ULTIMO_STATUS DATE,
    NAO_LIBERA_DISPENSA VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_STATISTICA_PROCESSAMENTO
RETURNS (
    PERIODO VARCHAR(10),
    VALOR_PAGO NUMERIC(15,2),
    VALOR_CREDITO NUMERIC(15,2),
    CONVENIO VARCHAR(10),
    QUANTIDADE INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_TABELA_RELACIONADA (
    CPF_CNPJ VARCHAR(14))
RETURNS (
    NOME_RAZAOSOCIAL VARCHAR(200),
    COD_TABELA_RELACIONADA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    CPFCNPJ VARCHAR(14),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_CEP CHAR(8),
    CNAE VARCHAR(20))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_TRATAR_GUIA_ESTORNO
RETURNS (
    COD_ARRECADACAO_ESTORNO NUMERIC(15,0),
    COD_ARRECADACAO NUMERIC(15,0),
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_VERIFICA_ACESSO (
    NUM_CARTEIRA VARCHAR(44))
RETURNS (
    NOME VARCHAR(80),
    MATRICULA INTEGER,
    CATEGORIA VARCHAR(200),
    MOTIVO VARCHAR(80),
    BLOQUEADO VARCHAR(1),
    FOTO VARCHAR(80))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_VERIFICA_DISPENSA_RECOLH (
    COD_ASSOCIADO INTEGER,
    COMPETENCIA VARCHAR(10))
RETURNS (
    VALOR_ZERADO VARCHAR(1),
    PROXIMA_COMPETENCIA VARCHAR(10))
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROC_WS_STATISTICA
RETURNS (
    QTD_ERRO BIGINT,
    QTD_REGISTRO_WEB BIGINT,
    QTD_REGISTRO_LOCAL BIGINT,
    QTD_REGISTRO BIGINT)
AS
BEGIN
  SUSPEND;
END^





CREATE PROCEDURE PROX_MENSALIDADE_EMPRESA (
    CONDICAO_SQL_WHERE VARCHAR(3000))
RETURNS (
    CODIGO INTEGER,
    NOME VARCHAR(80),
    TELEFONE1 VARCHAR(10),
    DATACADASTRO DATE,
    DATAADMISSAO DATE,
    NASCIMENTO DATE,
    TIPOASSOCIADO INTEGER,
    EMPRESA_ASSOCIADO VARCHAR(14),
    CNPJ VARCHAR(14),
    RAZAOSOCIAL VARCHAR(80),
    CONTATO VARCHAR(80),
    JF VARCHAR(1),
    ENDERECO VARCHAR(600),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF VARCHAR(2),
    ENDERECO_CEP VARCHAR(8),
    CNAE VARCHAR(18),
    NUMERO_EMPREGADOS INTEGER,
    VALOR_MENSALIDADE NUMERIC(15,2),
    PROXIMA_MENSALIDDE VARCHAR(10),
    CONTADOR VARCHAR(14),
    NAO_LIBERA_DISPENSA VARCHAR(1),
    USA_ULTIMO_VALOR_MENSALIDADE VARCHAR(1),
    ULTIMO_VALOR_MENSALIDADE NUMERIC(15,2),
    ULTIMA_MENSALIDADE VARCHAR(10))
AS
BEGIN
  SUSPEND;
END^






SET TERM ; ^



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/



CREATE TABLE ACESSO (
    ID            BIGINT GENERATED BY DEFAULT AS IDENTITY,
    MATRICULA     INTEGER,
    NOME          NOME,
    CATEGORIA     NOME,
    MOTIVO        NOME,
    CODIGO_BARRA  COD_BARRA,
    FOTO          NOME,
    LIBERADO      VARCHAR(1) COLLATE WIN_PTBR,
    CONVITE       VARCHAR(1) COLLATE WIN_PTBR,
    DATA_ACESSO   TIMESTAMP
);

CREATE TABLE ACESSOS_DIARIOS (
    CODIGO            CODIGO NOT NULL,
    COD_PESSOA        CODIGO,
    NOME              NOME,
    DATA              DATE,
    HORA              TIME,
    NUM_CARTEIRA      VARCHAR(20),
    MOTIVO_DESCRICAO  NOME,
    DENTRO            BOOLEAN_STR
);

CREATE TABLE ACORDO (
    COD_ACORDO          CODIGO NOT NULL,
    COD_COBRANCA        CODIGO_EXTENSO,
    COD_USUARIO_CAD     CODIGO,
    DATA_CAD            TIMESTAMP,
    INSTRUCAO_COBRANCA  OBSERVACAO,
    VALOR               VALOR,
    MULTA_JUROS         VALOR,
    OUTROS_ACRESCIMOS   VALOR,
    DESCONTO            VALOR,
    VALOR_A_PAGAR       VALOR,
    OBSERVACAO_BOLETO   OBSERVACAO,
    OBSERVACAO          OBSERVACAO,
    COMPETENCIA         INTEGER,
    COMPLEMENTAR        INTEGER
);

CREATE TABLE ACORDO_ARRECADACAO (
    COD_ACORDO_ARRECADACAO  CODIGO,
    COD_ACORDO              CODIGO,
    COD_ARRECADACAO         CODIGO_EXTENSO,
    PARCELA                 NOME
);

CREATE TABLE ACORDO_DETALHE (
    COD_ACORDO_DETALHE  CODIGO NOT NULL,
    COD_ACORDO          CODIGO,
    COD_ARRECADACAO     CODIGO_EXTENSO
);

CREATE TABLE ADVOGADOS (
    COD_ADVOGADO              CODIGO NOT NULL,
    NOME                      NOME NOT NULL,
    ENDERECO_TIPOENDERECO     NOME,
    ENDERECO_LOGRADOURO       NOME,
    ENDERECO_NUMERO           NOME,
    ENDERECO_COMPLEMENTO      NOME,
    CIDADE                    NOME,
    UF                        UF,
    BAIRRO                    NOME,
    CEP                       CEP,
    TELEFONE1                 TELEFONE,
    TELEFONE2                 TELEFONE,
    NASCIMENTO                DATE,
    CPF                       CPF,
    RG                        RG,
    MAE                       NOME,
    PAI                       NOME,
    DATACADASTRO              DATE,
    EMAIL                     NOME,
    SEXO                      BOOLEAN_STR,
    ESTADOCIVIL               CODIGO,
    OBSERVACAO                OBSERVACAO,
    OAB                       NOME,
    ENDERECO_CIDADE_COD_IBGE  CODIGO
);

CREATE TABLE AGENDA_DE_HORARIOS (
    COD_AGENDA_DE_HORARIOS    INTEGER,
    COD_AGENDA                CODIGO,
    COD_HORARIO_STATUS        CODIGO,
    CONVENIO_TIPO_SERVICO     CODIGO,
    DESCRICAO                 VARCHAR(255),
    TIPO                      INTEGER,
    STATUS                    INTEGER,
    COR                       INTEGER,
    INICIO                    TIMESTAMP,
    FIM                       TIMESTAMP,
    OPCOES                    INTEGER,
    RECORRENTE_INDEX          INTEGER,
    RECORRENTE_INF            BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    RESOURCE_ID               BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    LOCALIZACAO               VARCHAR(255),
    MENSAGEM                  VARCHAR(255),
    AVIDAR_DIA                TIMESTAMP,
    AVISAR_MINU_ANTECEDENCIA  INTEGER,
    INICIO_ATUAL              TIMESTAMP,
    FIM_ATUAL                 TIMESTAMP,
    SYNC_ID_FIELD             VARCHAR(255),
    PARENTID                  INTEGER,
    DIA_SEMANA                SMALLINT,
    TELE1                     TELEFONE COLLATE WIN_PTBR,
    TELE2                     TELEFONE COLLATE WIN_PTBR,
    EMAIL                     NOME COLLATE WIN_PTBR,
    TIPO_DO_HORARIO           BOOLEAN_STR COLLATE WIN_PTBR,
    OBS_SISTEMA               OBSERVACAO,
    TABELA_RELACIONADA        NOME,
    COD_TABELA_RELACIONADA    NOME
);

CREATE TABLE AGENDA_DE_HORARIOS_LIBERADO (
    CODIGO                 CODIGO NOT NULL,
    CONVENIO_TIPO_SERVICO  CODIGO,
    INICIO                 TIMESTAMP,
    FIM                    TIMESTAMP,
    DIA_SEMANA             ABREVIATURA
);

CREATE TABLE AGENDA_TELEFONICA (
    CODIGO                CODIGO NOT NULL,
    NOME                  NOME NOT NULL,
    TELEFONE1             TELEFONE,
    TELEFONE2             TELEFONE,
    EMAIL                 NOME,
    ANIVERSARIO           DATE,
    USUARIO               CODIGO,
    TIPO                  BOOLEAN_STR,
    ENDERECO_TIPO         NOME,
    ENDERECO_LOGRADOURO   NOME,
    ENDERECO_NUMERO       NOME,
    ENDERECO_COMPLEMENTO  NOME,
    ENDERECO_BAIRRO       NOME,
    ENDERECO_CIDADE       NOME,
    ENDERECO_UF           UF,
    ENDERECO_CEP          CEP,
    PARTICULAR            BOOLEAN_STR,
    OBSERVACAO            OBSERVACAO
);

CREATE TABLE AGENDAM_HOMO_WEB (
    CODIGO                  INTEGER NOT NULL,
    COD_FILIAL              CODIGO,
    COD_HOMOLOGACAO         CODIGO,
    COD_HOMOLOGADOR         CODIGO,
    COD_MOTIVO_AFASTAMENTO  CODIGO,
    COD_USUARIO_VERIFICADO  CODIGO,
    COD_CANCELAMENTO        CODIGO,
    USUARIO_GRAVACAO        CODIGO,
    PROTOCOLO               NOME,
    HORA_AGENDAMENTO        TIME,
    DATA_AGENDAMENTO        DATE,
    CNPJ                    CNPJ,
    TELEFONE                TELEFONE,
    CEP                     CEP,
    ENDERECO                NOME,
    NUMERO                  NOME,
    COMPLEMENTO             NOME,
    BAIRRO                  NOME,
    CIDADE                  NOME,
    UF                      UF,
    TRABALHADOR_CPF         CPF,
    RAZAO_SOCIAL            NOME,
    CNAE                    CNAE,
    TRABALHADOR_NOME        NOME,
    APROVADO                BOOLEAN_STR,
    DATA_VERIFICADO         DATE,
    DATA_CADASTRO           DATE,
    HORA_CADASTRO           TIME,
    RESPONSAVEL_NOME        NOME,
    RESPONSAVEL_TEL         TELEFONE,
    RESPONSAVEL_TIPO        NOME,
    TRABALHADOR_FUNCAO      NOME,
    OBSERVACAO              OBSERVACAO,
    DATA_AVISO              DATE,
    DATA_AFASTAMENTO        DATE,
    DATA_HORA_GRAVACAO      TIMESTAMP,
    JF                      BOOLEAN_STR,
    CONTADOR_CNPJ           CNPJ,
    CONTADOR_TIPO           BOOLEAN_STR
);

CREATE TABLE AGENDAM_HOMO_WEB_CONFIRM (
    CODIGO              CODIGO NOT NULL,
    CODIGO_AGENDAM_WEB  CODIGO,
    COD_USUARIO         CODIGO,
    COD_EVENTO          CODIGO,
    DATA                DATE,
    HORA                TIME,
    OBS                 OBSERVACAO,
    COD_HOMOLOGADOR     CODIGO
);

CREATE TABLE AGENDAM_HOMO_WEB_EVENTO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE AGENDAMENTO_SERVICO (
    CODIGO          CODIGO NOT NULL,
    COD_USUARIO     CODIGO,
    COD_ASSOCIADO   CODIGO,
    COD_SERVICO     CODIGO,
    DATA_CADASTRO   DATE,
    HORA_CADASTRO   TIME,
    OBS             OBSERVACAO,
    NOME_NAO_SOCIO  NOME,
    CPF_NAO_SOCIO   CPF
);

CREATE TABLE ARRECADACAO (
    COD_ARRECADACAO                  CODIGO_EXTENSO NOT NULL,
    COD_CONVENIO_COBRANCA            CODIGO,
    COD_LOCAL_EMISSAO                CODIGO,
    COD_USUARIO_EMISSAO              CODIGO,
    COD_USUARIO_PAGAMENTO            CODIGO,
    COD_FORMA_PAGAMENTO              CODIGO,
    COD_CAIXA_MOVIMENTACAO           CODIGO_EXTENSO,
    COD_COBRANCA_DETALHE             CODIGO_EXTENSO,
    COD_FILIAL_PAGAMENTO             CODIGO,
    COD_PADRAO_BANCARIO              CODIGO,
    COD_CONTA_BANCARIA_MOVIMENTO     VARCHAR(10),
    COD_TIPO_COBRANCA                CODIGO,
    COD_STATUS                       CODIGO,
    COD_ARRECADACAO_COMP_VALOR       CODIGO_EXTENSO,
    COD_USUARIO_IMPRESSAO            CODIGO,
    COD_FORMA_ARRECADACAO            ABREVIATURA,
    COD_ESTORNO_DETALHE              CODIGO,
    COD_FATURAMENTO                  CODIGO,
    COD_TIPO_ERRO_PROCESSAMENTO      CODIGO,
    COD_CENTRO_CUSTO                 CODIGO,
    COD_REMESSA_BANCO                CODIGO,
    COD_TABELA_RELACIONADA           NOME,
    TABELA_RELACIONADA               NOME,
    SEU_NUMERO                       SEU_NUMERO,
    NOSSO_NUMERO                     NOSSO_NUMERO,
    DATA_EMISSAO                     DATE,
    DATA_VENCIMENTO                  DATE,
    COMPETENCIA                      INTEGER,
    COMPLEMENTAR                     INTEGER,
    AGRUPADA                         CODIGO_EXTENSO,
    REFERENCIA                       DATE,
    DATA_PAGAMENTO                   DATE,
    VALOR_PAGAMENTO                  VALOR,
    OBS_PAGAMENTO                    OBSERVACAO,
    OBSERVACOES_SISTEMA              OBSERVACAO,
    FLAG                             CHAR(5),
    VALOR_A_PAGAR                    VALOR,
    VALOR_REPASSE_FEDERACAO          VALOR,
    VALOR_REPASSE_CONFEDERACAO       VALOR,
    VALOR_REPASSE_OUTROS             VALOR,
    VALOR_TARIFA                     VALOR,
    VALOR_MULTA                      VALOR,
    VALOR_JUROS                      VALOR,
    VALOR_OUTRAS_DESPESAS            VALOR,
    VALOR_OUTROS_CREDITOS            VALOR,
    VALOR_IOF                        VALOR,
    VALOR_DESCONTO                   VALOR,
    VALOR_CREDITADO                  VALOR,
    RECEBIMENTO_BANCARIO_BANCO       INTEGER,
    RECEBIMENTO_BANCARIO_AGENCIA     INTEGER,
    RECEBIMENTO_BANCARIO_COD_OCORRE  INTEGER,
    RECEBIMENTO_BANCARIO_DESC_OCORR  DESCRICAO,
    RECEBIMENTO_BANCARIO_CANAL_PGTO  DESCRICAO,
    OBS_OUTRAS                       OBSERVACAO COLLATE WIN_PTBR,
    CODIGO_DE_BARRAS                 CODIGO_BARRAS,
    LINHA_DIGITAVEL                  LINHA_DIGITAVEL COLLATE WIN_PTBR,
    VALOR_BASE_DE_CALCULO            VALOR,
    HASH_CODE_LINHA_ARQ_RETORNO      NOME,
    FLAG_LOCAL_IMPRESSAO             NOME,
    DATA_CREDITO                     DATE,
    RECEBIMENTO_BANCARIO             BOOLEAN_STR,
    EXCLUIDA                         BOOLEAN_STR,
    DATA_HORA_IMPRESSAO              DATE,
    ALTERADO_PARA_REMESSA            BOOLEAN_STR,
    WS_DATA                          TIMESTAMP,
    WS_DESCRICAO_RETORNO             NOME,
    WS_COD_RETORNO                   ABREVIATURA,
    WS_AUTENTICACAO                  NOME,
    RESGITRADO                       BOOLEAN_STR,
    COD_ACORDO                       CODIGO
);

CREATE TABLE ARRECADACAO_ACORDO (
    COD_ARRECADACAO_ACORDO  INTEGER NOT NULL,
    COD_ARRECADACAO         CODIGO_EXTENSO,
    COD_USUARIO             INTEGER,
    DATA_LANCAMENTO         TIMESTAMP,
    INSTRUCAO_COBRANCA      OBSERVACAO,
    OBSERVACAO_BOLETO       OBSERVACAO,
    OBSERVACAO              OBSERVACAO,
    VALOR_PRINCIPAL         VALOR,
    MULTA_JUROS             VALOR,
    OUTROS_ACRESCIMOS       VALOR,
    DESCONTO                VALOR,
    VALOR_A_PAGAR           VALOR
);

CREATE TABLE ARRECADACAO_DESCONTO (
    COD_ARRECADACAO_DESCONTO  CODIGO_EXTENSO NOT NULL,
    COD_ARRECADACAO           CODIGO_EXTENSO,
    VALOR                     VALOR,
    TIPO                      VARCHAR(20),
    DATA_DESCONTO             DATE
);

CREATE TABLE ARRECADACAO_DETALHE (
    COD_ARRECADACAO_DETALHE    CODIGO NOT NULL,
    COD_ARRECADACAO            CODIGO_EXTENSO,
    COD_ARRECADACAO_VINCULADO  CODIGO_EXTENSO,
    COD_USUARIO                CODIGO,
    DESCRICAO                  DESCRICAO,
    DATA_CAD                   DATE,
    HORA_CAD                   TIME,
    VALOR                      VALOR,
    DATA_VENCIMENTO            DATE,
    OBS_SISTEMA                OBSERVACAO,
    OBS_OUTRAS                 OBSERVACAO,
    BASE_DE_CALCULO            VALOR,
    COMENTARIO                 NOME
);

CREATE TABLE ARRECADACAO_HISTORICO (
    COD_ARRECADACAO_HISTORICO  CODIGO_EXTENSO NOT NULL,
    COD_CONVENIO_COBRANCA      CODIGO,
    COD_ARRECADACAO            CODIGO_EXTENSO,
    COD_USUARIO                CODIGO,
    COD_FILIAL                 CODIGO,
    MOVIMENTO_BANCARIO         BOOLEAN_STR,
    DATA_HORA                  TIMESTAMP,
    COMENTARIO                 DESCRICAO,
    DESCRICAO_TIPO_ACAO        DESCRICAO
);

CREATE TABLE ARRECADACAO_STATUS (
    COD_STATUS  CODIGO NOT NULL,
    DESCRICAO   DESCRICAO,
    COR         DESCRICAO
);

CREATE TABLE ASSISTENCIAL (
    CODIGO               CODIGO_EXTENSO NOT NULL,
    EMPRESA              CNPJ,
    DATA_EMISSAO         DATE,
    DATA_VENCIMENTO      DATE,
    DATA_BAIXA           DATE,
    COMPETENCIA          INTEGER,
    COMPLEMENTAR         INTEGER,
    VALOR                VALOR,
    MULTA_JUROS          VALOR,
    VALOR_BAIXA          VALOR,
    USUARIO_EMISSAO      CODIGO,
    USUARIO_BAIXA        CODIGO,
    REFERENCIA           DATE,
    AGRUPADA             CODIGO_EXTENSO,
    OBS_BAIXA            OBSERVACAO,
    TARIFA               VALOR,
    FORMA_BAIXA          NOME,
    COD_LOCAL_EMISSAO    CODIGO,
    COD_LOCAL_PAGAMENTO  CODIGO,
    COD_FORMA_PAGAMENTO  CODIGO,
    FILIAL_BAIXA         CODIGO,
    MOVIMENTO_CAIXA      CODIGO_EXTENSO,
    VALOR_MULTA          VALOR,
    VALOR_JUROS          VALOR,
    VALOR_PRINCIPAL      VALOR,
    EM_COBRANCA          BOOLEAN_STR,
    COD_PROC_DETALHE     CODIGO
);

CREATE TABLE ASSISTENCIAL_ATRAZO (
    NOVA_GUIA   CODIGO_EXTENSO NOT NULL,
    GUIAS       NOME,
    NUM_TABELA  CODIGO
);

CREATE TABLE ASSOCIADO (
    CODIGO                      CODIGO NOT NULL,
    NOME                        NOME NOT NULL,
    ENDERECO_TIPOENDERECO       NOME,
    ENDERECO_LOGRADOURO         NOME,
    ENDERECO_NUMERO             NOME,
    ENDERECO_COMPLEMENTO        NOME,
    CIDADE                      NOME,
    UF                          UF,
    BAIRRO                      NOME,
    CEP                         CEP,
    TELEFONE1                   TELEFONE,
    TELEFONE2                   TELEFONE,
    CTPS                        CTPS,
    CTPS_SERIE                  CTPS_SERIE,
    UFSERIE                     UF,
    NASCIMENTO                  DATE,
    TIPOASSOCIADO               CODIGO,
    CPF                         CPF,
    RG                          RG,
    PIS                         PIS,
    MAE                         NOME,
    PAI                         NOME,
    STATUS                      INTEGER,
    DATACADASTRO                DATE,
    EMAIL                       OBSERVACAO,
    EMPRESA                     CNPJ,
    DATAADMISSAO                DATE,
    DATADEMISSAO                DATE,
    CARGO                       NOME,
    SEXO                        BOOLEAN_STR,
    LOCAL_PAGAMENTO             BOOLEAN_STR,
    FOTO                        FOTO,
    EXISTE_FOTO                 BOOLEAN_STR,
    CARTEIRINHA                 CODIGO,
    ESTADOCIVIL                 CODIGO,
    OBSERVACAO                  OBSERVACAO,
    INICIO_COBRANCA             DATE,
    INSS                        NOME,
    ENDERECO_CIDADE_COD_IBGE    CODIGO,
    COD_BARRA_CARTEIRA          COD_BARRA,
    ULTIMA_MOVIMENTACAO         DATE,
    COD_ASSOCIADO_GRUPO_FATURA  CODIGO,
    EMAIL2                      EMAIL
);

CREATE TABLE ASSOCIADO_GRUPO (
    CODIGO         CODIGO NOT NULL,
    COD_ASSOCIADO  CODIGO,
    COD_GRUPO      CODIGO,
    DATA_INICIO    DATE,
    DATA_FIM       DATE
);

CREATE TABLE ASSOCIADO_GRUPO_FATURAMENTO (
    COD_ASSOCIADO_GRUPO_FATURA  CODIGO NOT NULL,
    COD_TIPO_COBRANCA           CODIGO,
    DESCRICAO                   NOME,
    VALOR                       VALOR,
    DIA_VENCIMENTO              INTEGER
);

CREATE TABLE ASSOCIADO_MUDANCA (
    CODIGO                     CODIGO NOT NULL,
    USUARIO                    CODIGO,
    DATA                       DATE,
    HORA                       TIME,
    ANTIGO                     CODIGO,
    NOVO                       CODIGO,
    ASSOCIADO                  CODIGO,
    MOTIVO                     OBSERVACAO,
    COD_MOTIVO                 CODIGO,
    OBS                        OBSERVACAO,
    COD_JUSTIFICATIVA_MUDANCA  CODIGO
);

CREATE TABLE ASSOCIATIVA (
    CODIGO              CODIGO NOT NULL,
    ASSOCIADO           CODIGO,
    VALOR               VALOR,
    USUARIO             CODIGO,
    DATA                DATE,
    REFERENCIA          REFERENCIA,
    COD_FORMAPAGAMENTO  CODIGO,
    MOVIMENTO_CAIXA     CODIGO_EXTENSO,
    EM_COBRANCA         BOOLEAN_STR
);

CREATE TABLE ATENDIMENTO_ASSOCIADO (
    CODIGO              CODIGO NOT NULL,
    DATA                DATE,
    USUARIO             CODIGO,
    ASSOCIADO           CODIGO,
    TIPO_ATENDIMENTO    CODIGO,
    HORA                TIME,
    DESCRICAO           OBSERVACAO,
    COD_STATUS          CODIGO,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME,
    DATA_ATENDIMENTO    DATE
);

CREATE TABLE ATENDIMENTO_CLI_PROCESSO (
    CODIGO                CODIGO NOT NULL,
    COD_STATUS            CODIGO,
    TIPO_ATENDIMENTO      CODIGO,
    USUARIO               CODIGO,
    COD_CLIENTE_PROCESSO  CODIGO,
    DATA                  DATE,
    HORA                  TIME,
    DESCRICAO             OBSERVACAO,
    DATA_ATENDIMENTO      DATE,
    INICIO_ATENDIMENTO    TIME,
    FIM_ATENDIMENTO       TIME,
    TEMPO_ATENDIMENTO     TIME
);

CREATE TABLE ATENDIMENTO_CLIENTES_PROCESSOS (
    CODIGO                CODIGO NOT NULL,
    COD_STATUS            CODIGO,
    TIPO_ATENDIMENTO      CODIGO,
    USUARIO               CODIGO,
    COD_CLIENTE_PROCESSO  CODIGO,
    DATA                  DATE,
    HORA                  TIME,
    DESCRICAO             OBSERVACAO,
    DATA_ATENDIMENTO      DATE,
    INICIO_ATENDIMENTO    TIME,
    FIM_ATENDIMENTO       TIME,
    TEMPO_ATENDIMENTO     TIME
);

CREATE TABLE ATENDIMENTO_COBRANCA (
    CODIGO              CODIGO NOT NULL,
    DATA                DATE,
    HORA                TIME,
    USUARIO             CODIGO,
    COBRANCA            CODIGO_EXTENSO,
    TIPO_ATENDIMENTO    CODIGO,
    DESCRICAO           OBSERVACAO,
    STATUS              CODIGO,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME
);

CREATE TABLE ATENDIMENTO_COMERCIARIO (
    CODIGO              CODIGO NOT NULL,
    COD_STATUS          CODIGO,
    TIPO_ATENDIMENTO    CODIGO,
    USUARIO             CODIGO,
    COD_COMERCIARIO     CODIGO,
    DATA                DATE,
    HORA                TIME,
    DESCRICAO           OBSERVACAO,
    DATA_ATENDIMENTO    DATE,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME
);

CREATE TABLE ATENDIMENTO_CONTABILIDADE (
    CODIGO              CODIGO NOT NULL,
    DATA                DATE,
    USUARIO             CODIGO,
    CONTABILIDADE       CNPJ,
    TIPO_ATENDIMENTO    CODIGO,
    HORA                TIME,
    DESCRICAO           OBSERVACAO,
    COD_STATUS          CODIGO,
    AVISAR              BOOLEAN_STR COLLATE WIN_PTBR,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME
);

CREATE TABLE ATENDIMENTO_EMPRESA (
    CODIGO              CODIGO NOT NULL,
    DATA                DATE,
    USUARIO             CODIGO,
    EMPRESA             CNPJ,
    TIPO_ATENDIMENTO    CODIGO,
    HORA                TIME,
    DESCRICAO           OBSERVACAO,
    COD_STATUS          CODIGO,
    AVISAR              BOOLEAN_STR,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME
);

CREATE TABLE ATENDIMENTO_ENTIDADE_SINDICAL (
    CODIGO                  CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL   CODIGO,
    COD_TIPO_ATENDIMENTO    CODIGO,
    COD_USUARIO             CODIGO,
    COD_STATUS_ATENDIMENTO  CODIGO,
    DATA_CAD                DATE,
    HORA_CAD                TIME,
    DATA_ATENDIMENTO        DATE,
    COMPUTADOR              NOME,
    DESCRICAO               NOME,
    OBS                     OBSERVACAO,
    INICIO_ATENDIMENTO      TIME,
    FIM_ATENDIMENTO         TIME,
    TEMPO_ATENDIMENTO       TIME
);

CREATE TABLE ATENDIMENTO_FORNECEDOR (
    CODIGO              CODIGO NOT NULL,
    DATA                DATE,
    USUARIO             CODIGO,
    FORNECEDOR          CNPJ,
    TIPO_ATENDIMENTO    CODIGO,
    HORA                TIME,
    DESCRICAO           OBSERVACAO,
    COD_STATUS          CODIGO,
    INICIO_ATENDIMENTO  TIME,
    FIM_ATENDIMENTO     TIME,
    TEMPO_ATENDIMENTO   TIME
);

CREATE TABLE ATENDIMENTO_JURIDICO (
    CODIGO                  CODIGO NOT NULL,
    DATA                    DATE,
    USUARIO                 CODIGO,
    TABELA_RELACIONADA      DESCRICAO,
    COD_TABELA_RELACIONADA  CHAVE_STR,
    TIPO_ATENDIMENTO        CODIGO,
    HORA                    TIME,
    DESCRICAO               OBSERVACAO,
    COD_STATUS              CODIGO,
    AVISAR                  BOOLEAN_STR,
    INICIO_ATENDIMENTO      TIME,
    FIM_ATENDIMENTO         TIME,
    TEMPO_ATENDIMENTO       TIME
);

CREATE TABLE ATUALIZACAO (
    COD_ATUALIZACAO  CODIGO NOT NULL,
    COD_USUARIO      CODIGO,
    DATA             DATE,
    HORA             TIME,
    HASH_CODE        NOME,
    VERSAO           DESCRICAO
);

CREATE TABLE AUDIENCIA_PROCESSO (
    COD_AUDIENCIA_PROCESSO  CODIGO NOT NULL,
    NUM_PROCESSO            NOME,
    DESCRICAO               NOME,
    LOCAL                   NOME,
    DATA_CAD                DATE,
    DATA_AUDIENCIA          DATE,
    HORA_AUDIENCIA          TIME,
    TESTEMUNHAS             OBSERVACAO,
    OBS                     OBSERVACAO
);

CREATE TABLE BACKUP (
    CODIGO      CODIGO NOT NULL,
    DATA        DATE,
    HORA        TIME,
    USUARIO     CODIGO,
    TIPO        NOME,
    DESTINO     NOME,
    COMPUTADOR  NOME
);

CREATE TABLE BANCO (
    CODIGO  VARCHAR(3) NOT NULL,
    NOME    NOME
);

CREATE TABLE BASE_TERRITORIAL (
    COD_BASE   CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE BASE_TERRITORIAL_CIDADES (
    COD_CIDADE          CODIGO NOT NULL,
    COD_BASE            CODIGO,
    DESCRICAO           NOME,
    FAIXA_CEP_INICIAL   INTEGER,
    FAIXA_CEP_FINAL     INTEGER,
    COD_MUNICIPIO_IBGE  CODIGO
);

CREATE TABLE BOLETA (
    NUMERO_GUIA                   VARCHAR(15) NOT NULL,
    VENCIMENTO                    DATE,
    EXERCICIO                     VARCHAR(20),
    EMPRESA_NOME                  NOME,
    EMPRESA_CNPJ                  NOME,
    EMPRESA_ENDERECO              NOME,
    EMPRESA_ENDERECO_NUMERO       NOME,
    EMPRESA_ENDERECO_COMPLEMENTO  NOME,
    EMPRESA_ENDERECO_CEP          NOME,
    EMPRESA_ENDERECO_BAIRRO       NOME,
    EMPRESA_ENDERECO_CIDADE       NOME,
    EMPRESA_ENDERECO_UF           UF,
    EMPRESA_CNAE                  CNAE,
    TOTAL_EMPREGADOS              QUANTIDADE,
    DATA_EMISSAO                  DATE,
    TELEFONE_EMPRESA              NOME,
    CODIGO_BARRAS                 CODIGO_BARRAS,
    LINHA_DIGITAVEL               LINHA_DIGITAVEL,
    TELEFONE_SINDICATO            NOME,
    NOSSO_NUMERO                  NOME,
    CONTABILIDADE_NOME            NOME,
    VALOR_GUIA                    VALOR,
    INSTRUCOES_1                  OBSERVACAO,
    INSTRUCOES_2                  OBSERVACAO,
    VALOR_MULTA                   VALOR,
    VALOR_JUROS                   VALOR,
    VALOR_RECOLHER                VALOR,
    REMUNERACAO_EMPREGADOS        VALOR,
    LOCAL_PAGAMENTO               OBSERVACAO
);

CREATE TABLE BORDERO (
    COD_BORDERO    CODIGO NOT NULL,
    COD_USUARIO    CODIGO,
    OBSERVACAO     OBSERVACAO,
    DATA_CADASTRO  DATE,
    CONTA          CODIGO
);

CREATE TABLE BORDERO_ITENS (
    COD_BORDERO_ITENS    CODIGO_EXTENSO NOT NULL,
    COD_BORDERO          CODIGO,
    COD_FORMA_PAGAMENTO  CODIGO,
    VALOR                VALOR,
    OBSERVACAO           OBSERVACAO,
    COD_USUARIO          CODIGO,
    DATA                 DATE,
    HORA                 TIME
);

CREATE TABLE CADASTRO_CHEQUE (
    CODIGO                   CODIGO NOT NULL,
    NUMERO                   VARCHAR(30),
    CONTA                    NOME,
    AGENCIA                  NOME,
    DATA_CAD                 DATE,
    NOME                     NOME,
    OBS                      OBSERVACAO,
    BANCO                    NOME,
    VALOR                    VALOR,
    BOM_PARA                 DATE,
    FONE1                    TELEFONE,
    FONE2                    TELEFONE,
    USUARIO                  CODIGO,
    EMITENTE                 NOME,
    COD_CHEQUE_MOVIMENTACAO  CODIGO,
    DATA_ENTRADA             DATE,
    DATA_DEPOSITO            DATE,
    DATA_MOVIMENTACAO        DATE,
    MOVIMENTO_CAIXA          CODIGO_EXTENSO,
    FILIAL                   CODIGO NOT NULL,
    COD_FILIAL               CODIGO NOT NULL,
    COD_ARRECADACAO          CODIGO_EXTENSO
);

CREATE TABLE CADASTRO_CHEQUE_EMITIDO (
    CODIGO                  CODIGO NOT NULL,
    COD_CONTA_PAGAR         CODIGO,
    COD_CONTA               VARCHAR(10),
    NUMERO                  VARCHAR(30),
    DATA_CAD                DATE,
    OBS                     OBSERVACAO,
    VALOR                   VALOR,
    BOM_PARA                DATE,
    USUARIO                 CODIGO,
    DATA_SAIDA              DATE,
    DATA_MOVIMENTACAO       DATE,
    TABELA_RELACIONADA      NOME,
    COD_TABELA_RELACIONADA  NOME,
    DATA_COMPENSACAO        DATE,
    COD_STATUS              CODIGO
);

CREATE TABLE CAIXA_AJUSTE (
    COD_CAIXA_AJUSTE              INTEGER NOT NULL,
    COD_USUARIO                   CODIGO,
    COD_CONTA_BANCARIA_MOVIMENTO  VARCHAR(10),
    COD_PLANO_CONTA               CODIGO,
    DATA_LANCAMENTO               DATE,
    ENTRADA_SAIDA                 VARCHAR(1),
    JUSTIFICATIVA                 OBSERVACAO,
    OBSERVACAO                    OBSERVACAO,
    VALOR_MOVIMENTO               VALOR,
    DATA_MOVIMENTO                DATE,
    COD_FORMA_PAGAMENTO           CODIGO
);

CREATE TABLE CAIXA_ESTORNO (
    COD_CAIXA_ESTORNO       CODIGO NOT NULL,
    COD_PLANO_CONTA         CODIGO,
    COD_USUARIO             CODIGO,
    COD_FILIAL              CODIGO,
    DATA_CAD                DATE,
    HORA_CAD                TIME,
    DATA_MOVIMENTACAO       DATE,
    VALOR_MOVIMENTO         VALOR,
    MULTA                   VALOR,
    JUROS                   VALOR,
    DESCONTO                VALOR,
    TABELA_RELACIONADA      NOME,
    COD_TABELA_RELACIONADA  CHAVE_STR,
    MOTIVO                  OBSERVACAO
);

CREATE TABLE CAIXA_EVENTO (
    COD_CAIXA_EVENTO  CODIGO NOT NULL,
    DESCRICAO         NOME,
    MOVIMENTA         BOOLEAN_STR,
    APELIDO           ABREVIATURA
);

CREATE TABLE CAIXA_MOVIMENTACAO (
    COD_CAIXA_MOVIMENTACAO  CODIGO_EXTENSO NOT NULL,
    DATA                    DATE,
    HORA                    TIME,
    USUARIO                 CODIGO,
    FILIAL                  CODIGO,
    EVENTO                  CODIGO,
    CENTRO_CUSTO            CODIGO,
    COD_FORMA_PAGAMENTO     CODIGO
);

CREATE TABLE CAIXA_SAIDA (
    CODIGO              CODIGO NOT NULL,
    DESCRICAO           NOME,
    DATA_LANCAMENTO     DATE,
    HORA_LANCAMENTO     TIME,
    USUARIO_LANCAMENTO  CODIGO,
    DATA_SAIDA          DATE,
    VALOR               VALOR,
    OBS                 OBSERVACAO,
    FILIAL              CODIGO,
    MOVIMENTO_CAIXA     CODIGO_EXTENSO,
    PAGO_A              NOME,
    SANGRIA             BOOLEAN_STR DEFAULT 'F'
);

CREATE TABLE CAIXA_USUARIOS_LIBERADOS (
    COD_CAIXA_USUARIOS_LIBERADOS  CODIGO NOT NULL,
    COD_USUARIO                   CODIGO,
    DATA                          DATE,
    HORA                          TIME,
    LIBERADO_POR                  CODIGO,
    FILIAL                        CODIGO
);

CREATE TABLE CALCULO_RESCISAO (
    CODIGO                  CODIGO NOT NULL,
    USUARIO                 CODIGO,
    VALOR_SALARIO           VALOR,
    TIPO_RESCISAO           CODIGO,
    TOTAL_BRUTO             VALOR,
    TOTAL_LIQUIDO           VALOR,
    FILHOS                  QUANTIDADE,
    CTPS                    CTPS,
    CTPS_SERIE              CTPS_SERIE,
    DATA_CALCULO            DATE,
    DATA_ADMISSAO           DATE,
    DATA_AVISO              DATE,
    DATA_AFASTAMENTO        DATE,
    CTPS_UF_SERIE           UF,
    EMPREGADO               NOME,
    TOTAL_DESCONTOS         VALOR,
    CONTABILIDADE           CNPJ,
    EMPRESA                 CNPJ,
    HORA_CALCULO            TIME,
    VALOR_FINS_RESCISORIOS  VALOR,
    CARGO                   NOME,
    FGTS                    VALOR,
    FGTS_40                 VALOR,
    FERIAS_GOZADAS          INTEGER,
    COMISSIONISTA           BOOLEAN_STR,
    FERIAS_DIREITO          INTEGER,
    MEDIA_COMISSOES         VALOR,
    QUEBRA_CAIXA            BOOLEAN_STR,
    INSALUBRIDADE           BOOLEAN_STR,
    PERICULOSIDADE          BOOLEAN_STR,
    INSALUBRIDADE_ALIQ      PERCENTUAL,
    SEGURO_PARCELAS         INTEGER,
    SEGURO_VALOR            VALOR,
    ULTIMA_COMISSAO         VALOR,
    OBSERVACAO              OBSERVACAO
);

CREATE TABLE CALCULO_RESCISAO_ITEMS (
    CODIGO         CODIGO NOT NULL,
    RESCISAO       CODIGO,
    ITEM_RESCISAO  CODIGO,
    QTE            VALOR,
    VALOR          VALOR
);

CREATE TABLE CANAIS_RECEBIMENTO (
    CODIGO     CHAVE_STR NOT NULL,
    DESCRICAO  DESCRICAO,
    TARIFA     VALOR,
    BANCO      BANCO
);

CREATE TABLE CARTEIRINHA (
    CODIGO             INTEGER NOT NULL,
    DESCRICAO          NOME,
    FAZER_CARTEIRINHA  VARCHAR(1)
);

CREATE TABLE CATRACATOPDATA (
    NUMCAT       CODIGO NOT NULL,
    DESCRICAO    NOME,
    SENTIDOGIRO  NOME,
    TIPOACESSO   NOME
);

CREATE TABLE CENSO (
    COD_CENSO      CODIGO NOT NULL,
    DESCRICAO      NOME,
    DATA_CONSULTA  DATE,
    OBSERVACAO     OBSERVACAO
);

CREATE TABLE CENSO_BASE_TERRITORIAL (
    COD_CENSO_BASE_TERRITORIAL     CODIGO NOT NULL,
    COD_CENSO                      CODIGO,
    COD_MUNICIPIO_IBGE             CODIGO,
    POPULACAO                      INTEGER,
    EMPREGADOS_CATEGORIA           INTEGER,
    EMPRESAS                       INTEGER,
    ADMITIDOS                      INTEGER,
    DEMITIDOS                      INTEGER,
    SALARIO_MEDIO_ADMISSAO         VALOR,
    "%_AJUSTE"                     PERCENTUAL,
    EMPREGADOS_CATEGORIA_AJUSTE    INTEGER,
    EMPRESAS_AJUSTE                INTEGER,
    ADMITIDOS_AJUSTE               INTEGER,
    DEMITIDOS_AJUSTE               INTEGER,
    RECEITA_ESTIMADA_SINDICAL      VALOR,
    RECEITA_ESTIMADA_ASSISTENCIAL  VALOR
);

CREATE TABLE CENTRO_CUSTO (
    COD_CENTRO_CUSTO  CODIGO NOT NULL,
    DESCRICAO         NOME,
    COD_GRUPO_CUSTO   CODIGO
);

CREATE TABLE CHECK_LIST_HOMOLOGACAO (
    CODIGO            INTEGER NOT NULL,
    DATA_CADASTRO     DATE,
    CTPS              CTPS,
    EMPRESA           CNPJ,
    USUARIO           CODIGO,
    SEXO              BOOLEAN_STR,
    DATA_ADMISSAO     DATE,
    DATA_DEMISSAO     DATE,
    OBSERVACAO        OBSERVACAO,
    FUNCIONARIO       NOME,
    DATA_AVISO        DATE,
    DATA_NASCIMENTO   DATE,
    VALOR_SALARIO     VALOR,
    CTPS_SERIE_UF     UF,
    CTPS_SERIE        CTPS_SERIE,
    HORA_CADASTRO     TIME,
    SITUACAO          NOME,
    COD_HOMOLOGADOR   CODIGO,
    ASSOCIADO         CODIGO,
    FILIAL            CODIGO,
    TIPO_AFASTAMENTO  CODIGO,
    FUNCAO            NOME
);

CREATE TABLE CHEQUE_MOVIMENTACAO (
    CODIGO     INTEGER NOT NULL,
    DESCRICAO  DESCRICAO
);

CREATE TABLE CLIENTES_PROCESSOS (
    COD_CLIENTE_PROCESSO      CODIGO NOT NULL,
    NOME                      NOME NOT NULL,
    ENDERECO_TIPOENDERECO     NOME,
    ENDERECO_LOGRADOURO       NOME,
    ENDERECO_NUMERO           NOME,
    ENDERECO_COMPLEMENTO      NOME,
    CIDADE                    NOME,
    UF                        UF,
    BAIRRO                    NOME,
    CEP                       CEP,
    TELEFONE1                 TELEFONE,
    TELEFONE2                 TELEFONE,
    CTPS                      CTPS,
    CTPS_SERIE                CTPS_SERIE,
    UFSERIE                   UF,
    NASCIMENTO                DATE,
    CPF                       CPF,
    RG                        RG,
    PIS                       PIS,
    MAE                       NOME,
    PAI                       NOME,
    DATACADASTRO              DATE,
    EMAIL                     NOME,
    SEXO                      BOOLEAN_STR,
    ESTADOCIVIL               CODIGO,
    OBSERVACAO                OBSERVACAO,
    ENDERECO_CIDADE_COD_IBGE  CODIGO,
    COD_ASSOCIADO             CODIGO,
    COD_COMERCIARIO           CODIGO,
    TABELA_RELACIONADA        NOME,
    COD_TABELA_RELACIONADA    NOME
);

CREATE TABLE CNAEF (
    CNAEF_ID                    CHAR(7) NOT NULL,
    DESMEMBRAMENTO              CHAR(2) NOT NULL,
    ATIVIDADE_PRINCIPAL         OBSERVACAO,
    ATIVIDADES_PERTINENTES      OBSERVACAO,
    ATIVIDADES_NAO_PERTINENTES  OBSERVACAO,
    COD_CNAE                    CNAE NOT NULL
);

CREATE TABLE COBRANCA (
    COD_COBRANCA               CODIGO_EXTENSO NOT NULL,
    COD_USUARIO                CODIGO,
    COD_STATUS                 CODIGO,
    COD_COBRANCA_FILA          CODIGO,
    COD_TIME_LINE_STATUS       CODIGO,
    DATA_CADASTRO              DATE,
    HORA_CADASTRO              TIME,
    DATA_TIME_LINE             DATE,
    OBS                        OBSERVACAO,
    DATA_INICIO_PROCESSO       DATE,
    DATA_ENCERRAMENTO          DATE,
    DESCRICAO                  NOME,
    COMISSAO_VALOR             VALOR,
    COMISSAO_PERCENTUAL        VALOR,
    VALOR_FINAL                VALOR,
    DESCONTO_FINAL_PERCENTUAL  VALOR,
    DESCONTO_FINAL_VALOR       VALOR,
    VALOR_REAL_GUIA            VALOR,
    ACRESCIMO_FINAL            VALOR,
    JUROS_FINAL                VALOR,
    MULTA_FINAL                VALOR,
    DATA_VERIFICACAO_INICIO    DATE,
    DATA_VERIFICACAO_FIM       DATE,
    TABELA_RELACIONADA         NOME,
    COD_TABELA_RELACIONADA     NOME,
    NEGOCIADO_NOME             NOME,
    NEGOCIADO_SETOR            NOME,
    NEGOCIADO_EMAIL            DESCRICAO
);

CREATE TABLE COBRANCA_DETALHE (
    COD_COBRANCA_DETALHE  CODIGO_EXTENSO NOT NULL,
    COD_COBRANCA          CODIGO_EXTENSO,
    VALOR                 VALOR,
    MULTA                 VALOR,
    JUROS                 VALOR,
    DESCONTO              VALOR,
    OUTROS_ACRESCIMOS     VALOR,
    TOTAL_PAGAR           VALOR,
    VENCIMENTO            DATE,
    COMPETENCIA           INTEGER,
    COMPLEMENTAR          INTEGER,
    COD_TIPO_COBRANCA     CODIGO,
    COD_ARRECADACAO       CODIGO_EXTENSO
);

CREATE TABLE COBRANCA_FILA (
    COD_COBRANCA_FILA       CODIGO NOT NULL,
    COD_USUARIO_CAD         CODIGO,
    COD_USUARIO_COBRANCA    CODIGO,
    DATA_CAD                DATE,
    TABELA_RELACIONADA      NOME,
    COD_TABELA_RELACIONADA  NOME,
    DESCRICAO               DESCRICAO,
    FLAG                    DESCRICAO
);

CREATE TABLE COBRANCA_STATUS (
    COD_STATUS         CODIGO NOT NULL,
    DESCRICAO          NOME,
    INDICA_FINALIZADO  BOOLEAN_STR
);

CREATE TABLE COBRANCA_TIMELINE_STATUS (
    COD_TIMELINE_STATUS  INTEGER NOT NULL,
    DESCRICAO            NOME,
    TEMPO_DIA            INTEGER,
    ORDEM                INTEGER
);

CREATE TABLE CODIGO_ERRO_PROCESSAMENTO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  VARCHAR(300)
);

CREATE TABLE COMARCA (
    COD_COMARCA  CODIGO NOT NULL,
    DESCRICAO    NOME
);

CREATE TABLE COMERCIARIO (
    CODIGO                      CODIGO NOT NULL,
    CPF                         CPF NOT NULL,
    NOME                        NOME,
    ENDERECO_TIPOENDERECO       NOME,
    ENDERECO_LOGRADOURO         NOME,
    ENDERECO_NUMERO             NOME,
    ENDERECO_COMPLEMENTO        NOME,
    CIDADE                      NOME,
    UF                          UF,
    BAIRRO                      NOME,
    CEP                         CEP,
    TELEFONE1                   TELEFONE,
    TELEFONE2                   TELEFONE,
    CTPS                        CTPS,
    CTPS_SERIE                  CTPS_SERIE,
    UFSERIE                     UF,
    NASCIMENTO                  DATE,
    RG                          RG,
    PIS                         PIS,
    MAE                         NOME,
    PAI                         NOME,
    DATACADASTRO                DATE,
    EMAIL                       NOME,
    EMPRESA                     CNPJ,
    DATAADMISSAO                DATE,
    DATADEMISSAO                DATE,
    CARGO                       NOME,
    SEXO                        BOOLEAN_STR,
    LOCAL_PAGAMENTO             BOOLEAN_STR,
    EXISTE_FOTO                 BOOLEAN_STR,
    CARTEIRINHA                 CODIGO,
    ESTADOCIVIL                 CODIGO,
    OBSERVACAO                  OBSERVACAO,
    FOTO                        NOME,
    STATUS                      CODIGO,
    TIPO                        NOME,
    COD_BARRA_CARTEIRA          COD_BARRA,
    COD_ASSOCIADO_GRUPO_FATURA  CODIGO
);

CREATE TABLE COMPROMISSO (
    CODIGO       CODIGO_EXTENSO NOT NULL,
    DATA_CAD     DATE,
    HORA_CAD     TIME,
    OBS          OBSERVACAO,
    DATA_EVENTO  DATE,
    HORA_EVENTO  TIME,
    DATA_AVISO   DATE,
    HORA_AVISO   TIME,
    DESCRICAO    NOME,
    LIDA         BOOLEAN_STR COLLATE WIN_PTBR,
    COD_USUARIO  CODIGO_EXTENSO
);

CREATE TABLE CONFEDERATIVA (
    CODIGO               CODIGO_EXTENSO NOT NULL,
    EMPRESA              CNPJ,
    DATA_EMISSAO         DATE,
    DATA_VENCIMENTO      DATE,
    DATA_BAIXA           DATE,
    COMPETENCIA          INTEGER,
    COMPLEMENTAR         INTEGER,
    VALOR                VALOR,
    MULTA_JUROS          VALOR,
    VALOR_BAIXA          VALOR,
    USUARIO_EMISSAO      CODIGO,
    USUARIO_BAIXA        CODIGO,
    REFERENCIA           DATE,
    AGRUPADA             CODIGO_EXTENSO,
    OBS_BAIXA            OBSERVACAO,
    TARIFA               VALOR,
    FORMA_BAIXA          NOME,
    COD_FORMA_PAGAMENTO  CODIGO,
    MOVIMENTO_CAIXA      CODIGO_EXTENSO,
    EM_COBRANCA          BOOLEAN_STR,
    COD_PROC_DETALHE     CODIGO
);

CREATE TABLE CONFIG_AGENDAMENTO_SERVICO (
    CODIGO                 INTEGER NOT NULL,
    CONVENIO_TIPO_SERVICO  INTEGER NOT NULL,
    DIAS_AGENDAMENTO       NOME
);

CREATE TABLE CONFIG_ATUALIZA_CAD_AUT (
    CODIGO       CODIGO NOT NULL,
    TABELA       NOME,
    CAMPO        NOME,
    SELECIONADO  BOOLEAN_STR
);

CREATE TABLE CONFIGURACAO (
    CODIGO                    INTEGER NOT NULL,
    ATALHO_EDITAR             NOME,
    ATALHO_EXCLUIR            NOME,
    ATALHO_SALVAR             NOME,
    ATALHO_CANCELAR           NOME,
    ATALHO_INCLUIR            NOME,
    ATALHO_PESQUISA           NOME,
    ETIQUETA_PADRAO           CODIGO,
    CHEQUE_PADRAO             CODIGO,
    ORDENAR_RGISTRO_PESQUISA  BOOLEAN_STR,
    TIPO_PESQUISA             NOME
);

CREATE TABLE CONFIGURACAO_ASSISTENCIAL (
    MENSAGEM_AO_EMPREGADOR        OBSERVACAO,
    INSTRUCOES_ASSISTENCIAL       OBSERVACAO,
    NUMERO_ASSISTENCIAL           CODIGO_EXTENSO,
    VENCIMENTO_ASSISTENCIAL       DATE,
    MARGEM_SUPERIOR               INTEGER,
    JUROS                         VALOR,
    MULTA                         VALOR,
    EMBASAMENTO_ASSISTENCIAL      OBSERVACAO,
    FILTRO_INIICIAL_ASSISTENCIAL  NOME,
    COMPETENCIA                   INTEGER,
    DATA_BASE_GUIAS_NAO_GERADAS   DATE,
    VERIFICA_GUIAS_NAO_GERADAS    BOOLEAN_STR
);

CREATE TABLE CONFIGURACAO_ASSOCIADO (
    TEMPO_CARENCIA                   INTEGER,
    TIPO_ASSOCIADO                   CODIGO,
    LOCAL_PAGAMENTO_ASSOCIADO        BOOLEAN_STR,
    STATUS_ASSOCIADO                 CODIGO,
    STATUS_ASSOCIADO_FINAL           CODIGO,
    CARTEIRINHA                      CODIGO,
    OBSERVACAO_PROPOSTA              BOOLEAN_STR,
    COBRAR_MES_INGRESSO              BOOLEAN_STR,
    IMPRIMIR_RECIBO_MENSALIDADE      BOOLEAN_STR,
    CARTEIRINHA_FAZENDO              CODIGO,
    ANTECIPA_CARENCIA                BOOLEAN_STR,
    RECIBO_MENSALIDADE_QUESTIONAR    BOOLEAN_STR,
    STATUS_AFETA_PAGAMENTO           BOOLEAN_STR,
    DEBITO_ASSOCIADO                 BOOLEAN_STR,
    DEBITO_MENSALIDADE               BOOLEAN_STR,
    RECIBO_MENSALIDADE               NOME,
    INICIO_COBRANCA                  DATE,
    CREDITO_CONSULTA                 BOOLEAN_STR,
    CONVENIO_PADRAO                  CODIGO,
    LIMITE_CONSULTAS                 INTEGER,
    INATIVAR_FALTA_PAGAMENTO         INTEGER,
    DIA_VENC_MENSALIDADE             SMALLINT,
    CONTROLE_LIMITE_IDADE            BOOLEAN_STR,
    TITULO_FICHA                     DESCRICAO,
    FICHA_OU_PROPOSTA                BOOLEAN_STR,
    CABECALHO_PROPOSTA               OBSERVACAO,
    RESUMO_PROPOSTA                  OBSERVACAO,
    DISPENSA_DE_MENALIDADE_ZERADA    BOOLEAN_STR DEFAULT 'F',
    VENCIMENTO_MES_SEGUINTE          BOOLEAN_STR,
    VALOR_PROXIMA_MENSALIDADE        NOME,
    MUDA_STATUS_DEPENDENTE           BOOLEAN_STR,
    STATUS_DEPEND_EXCLUSAO           CODIGO,
    COD_TIPO_COBRANCA_MENSALIDADE    CODIGO,
    COD_TIPO_COBRANCA_AGRUPAMENTO    CODIGO,
    AVISAR_OBSERVACAO                BOOLEAN_STR,
    DIAS_REVER_CADASTRO              INTEGER,
    TIPO_CARTEIRINHA                 NOME,
    COD_STATUS_CARENCIA              CODIGO,
    COD_STATUS_PERMANENCIA           CODIGO,
    OBS_PROPOSTA                     OBSERVACAO,
    COD_STATUS_INATIVO               CODIGO,
    COD_TIPO_COBRANCA_SOCIALEMPRESA  CODIGO,
    CODIGO                           CODIGO,
    FILTRO_INICIAL_TIPO_COBRANCA     CODIGO,
    PRAZO_TROCA_CONVITE              CODIGO
);

CREATE TABLE CONFIGURACAO_BACKUP (
    COD_CONF_BKP   CODIGO NOT NULL,
    PERIODICIDADE  ABREVIATURA,
    USUARIOS       OBSERVACAO,
    DESTINO        NOME
);

CREATE TABLE CONFIGURACAO_BACKUP_LISTA (
    COD_CONF_BKP_LISTA  CODIGO NOT NULL,
    COD_CONF_BKP        CODIGO,
    ORIGEM              OBSERVACAO,
    NOME                OBSERVACAO,
    TIPO                NOME,
    ARQUIVO_DESTINO     NOME
);

CREATE TABLE CONFIGURACAO_CATRACA (
    NUM_PORTARIA              INTEGER,
    LOCAL_FOTOS               VARCHAR(200),
    LOGOTIPO                  VARCHAR(200),
    DADOS_OFFLINE             VARCHAR(200),
    DADOS_ONLINE              VARCHAR(200),
    CONEXAO                   SMALLINT,
    PROTOCOLO                 SMALLINT,
    SERVIDOR                  NOME,
    TAM_COD_BARRA             SMALLINT,
    MSG_CATRACA_ENTRADA       NOME,
    MSG_CATRACA_SAIDA         NOME,
    MSG_CATRACA_BLOQUEIO      NOME,
    MSG_SISTEMA_ENTRADA       NOME,
    MSG_SISTEMA_SAIDA         NOME,
    MSG_SISTEMA_BLOQUEIO      NOME,
    ATIVA_INICIO              BOOLEAN_STR,
    CONSULTA_OFFLINE          BOOLEAN_STR,
    VERIFICA_REENTRADA        BOOLEAN_STR,
    TEMPO_MSG_CATRACA         SMALLINT,
    TEMPO_GIRO_BRACO          SMALLINT,
    TEMPO_ATUALIZACAO         TIME,
    MSG_SISTEMA_PADRAO        NOME,
    MSG_CATRACA_PADRAO        NOME,
    ULTIMO_REINICIO_CONTROLE  DATE,
    MODELO_CATRACA            NOME,
    REINICIO_AUTOMATICO       BOOLEAN_STR,
    PORTA                     SMALLINT,
    TIPO_LEITOR               SMALLINT
);

CREATE TABLE CONFIGURACAO_CONFEDERATIVA (
    MENSAGEM_AO_EMPREGADOR         OBSERVACAO,
    INSTRUCOES_CONFEDERATIVA       OBSERVACAO,
    NUMERO_CONFEDERATIVA           CODIGO_EXTENSO,
    VENCIMENTO_CONFEDERATIVA       DATE,
    MARGEM_SUPERIOR                INTEGER,
    JUROS                          VALOR,
    MULTA                          VALOR,
    EMBASAMENTO_CONFEDERATIVA      OBSERVACAO,
    FILTRO_INIICIAL_CONFEDERATIVA  NOME,
    VERIFICA_GUIAS_NAO_GERADAS     BOOLEAN_STR COLLATE WIN_PTBR,
    DATA_BASE_GUIAS_NAO_GERADAS    DATE,
    HISTORICO_EXTRATO              NOME
);

CREATE TABLE CONFIGURACAO_CONTABILIDADE (
    DIAS_REVER_CADASTRO  INTEGER,
    CODIGO               CODIGO
);

CREATE TABLE CONFIGURACAO_EMAIL (
    COD_CONFIG                       CODIGO DEFAULT 1 NOT NULL,
    EMAIL_HOST                       NOME,
    EMAIL_LOGIN                      NOME,
    EMAIL_SENHA                      NOME,
    EMAIL_REMENTENTE_EMAIL           NOME,
    EMAIL_REMETENTE_NOME             NOME,
    EMAIL_AUTENTICACAO               BOOLEAN_STR DEFAULT 'T',
    EMAIL_TIPO_AUTENTIC_USER_CONTRO  NOME,
    MENSAGEM_PADRAO                  OBSERVACAO,
    COPIA_USUARIO_REMETENTE          BOOLEAN_STR,
    EMAIL_AUTENTICACAO_SEGURA        BOOLEAN_STR,
    EMAIL_PORTA                      SMALLINT,
    EMAIL_SSL                        BOOLEAN_STR,
    EMAIIL_TLS                       BOOLEAN_STR,
    EMAIL_SUPORTE_HOST               NOME,
    EMAIL_SUPORTE_EMAIL              NOME,
    EMAIL_SUPORTE_LOGIN              NOME,
    EMAIL_SUPORTE_SENHA              NOME,
    EMAIL_SUPORTE_PORTA              SMALLINT,
    EMAIL_SUPORTE_SSL                BOOLEAN_STR,
    EMAIL_SUPORTE_TLS                BOOLEAN_STR,
    EMAIL_IMAP_HOST                  NOME,
    EMAIL_IMAP_PORTA                 SMALLINT,
    EMAIL_IMAP_ITENS_ENVIADO         NOME,
    EMAIL_COPIAR                     OBSERVACAO,
    ASSUNTO_PADRAO                   NOME,
    ANEXO1_PADRAO                    DIRETORIO,
    ANEXO2_PADRAO                    DIRETORIO,
    ANEXO3_PADRAO                    DIRETORIO,
    EMAIL_ENVIO_PADRAO               NOME
);

CREATE TABLE CONFIGURACAO_EMPRESA (
    COD_CONF_EMPRESA                CODIGO NOT NULL,
    AVISAR_EXIGIR_CNAE              BOOLEAN_STR DEFAULT 'E',
    AVISAR_EXIGIR_ENDERECO          BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_EMAIL             BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_CONTADOR          BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_TELEFONE          BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_NOME_FANTASIA     BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_CEP               BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_BAIRRO            BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_CIDADE            BOOLEAN_STR DEFAULT 'A',
    AVISAR_EXIGIR_UF                BOOLEAN_STR DEFAULT 'A',
    LISTAR_ALTERACOES               BOOLEAN_STR DEFAULT 'T',
    LISTAR_OPOSICOES                BOOLEAN_STR DEFAULT 'T',
    LISTAR_ASSOCIADOS               BOOLEAN_STR DEFAULT 'T',
    LISTAR_GUIAS_WEB                BOOLEAN_STR DEFAULT 'T',
    LISTAR_APURACAO                 BOOLEAN_STR DEFAULT 'T',
    LISTAR_CONTABILIDADE            BOOLEAN_STR DEFAULT 'T',
    AVISAR_EXIGIR_DENTRO_SEGMENTO   BOOLEAN_STR DEFAULT 'E',
    AVISAR_EXIGIR_DENTRO_BASE       BOOLEAN_STR DEFAULT 'E',
    MOSTRAR_DADOS_RECEITA_INCLUSAO  BOOLEAN_STR DEFAULT 'T',
    MOSTRAR_DADOS_RECEITA_CONSULTA  BOOLEAN_STR DEFAULT 'T',
    VERIFICAR_DIVERGENCIAS_RECEITA  BOOLEAN_STR DEFAULT 'T',
    COD_STATUS_INICIAL              CODIGO,
    LIBERAR_AJUSTE_BASE             BOOLEAN_STR DEFAULT 'F',
    LIBERAR_AJUSTE_SEGMENTO         BOOLEAN_STR DEFAULT 'F',
    COD_STATUS_FORA_SEGMENTO        CODIGO,
    COD_STATUS_FORA_BASE            CODIGO,
    PERMITE_CPF                     BOOLEAN_STR DEFAULT 'F',
    DIAS_REVER_CADASTRO             INTEGER
);

CREATE TABLE CONFIGURACAO_ENTIDADE_SINDICAL (
    COD_CONF_ENTIDADE    CODIGO NOT NULL,
    DIAS_REVER_CADASTRO  INTEGER
);

CREATE TABLE CONFIGURACAO_FORNECEDOR (
    COD_CONF_FORNECEDOR  CODIGO NOT NULL,
    COD_STATUS_INICIAL   CODIGO
);

CREATE TABLE CONFIGURACAO_GUIA_ARRECADACAO (
    CODIGO                           CODIGO NOT NULL,
    COD_LOCAL_PGTO_ARQ_RETRONO       CODIGO,
    COD_FORMA_PAGAMENTO_ARQ_RETORNO  CODIGO
);

CREATE TABLE CONFIGURACAO_PLANO_BASICO (
    CODIGO                         INTEGER NOT NULL,
    BANCO                          NOME,
    VENCIMENTO_PLANO_BASICO        DATE,
    NUMERO_PLANO_BASICO            CODIGO_EXTENSO,
    MULTA_PLANO_BASICO             PERCENTUAL,
    JUROS_PLANO_BASICO             VALOR,
    NOME_IMPRESSORA_PLANO_BASICO   NOME,
    PORTA_IMPRESSORA_PLANO_BASICO  NOME,
    INSTRUCOES_PLANO_BASICO        OBSERVACAO,
    TITULO_PLANO_BASICO            NOME,
    EMBASAMENTO_PLANO_BASICO       NOME,
    FILTRO_INICIAL_PLANO_BASICO    NOME,
    MARGEM_SUPERIOR_PLANO_BASICO   INTEGER,
    COD_FILIAL                     CODIGO,
    VALOR_CONTRIBUICAO             VALOR,
    EMITIR_COM_VALOR               BOOLEAN_STR COLLATE WIN_PTBR,
    SEQUENCIAL_REMESSA             INTEGER,
    INSTRUCOES_PLANO_BASICO_CAIXA  OBSERVACAO,
    BASE_TERRITORIAL               NOME
);

CREATE TABLE CONFIGURACAO_SINDICAL (
    MENSAGEM_AO_EMPREGADOR       OBSERVACAO,
    INSTRUCOES                   OBSERVACAO,
    NUMERO_SINDICAL              CODIGO_EXTENSO,
    VENCIMENTO_SINDICAL          DATE,
    CNAE                         CNAE,
    LOCAL_PAGAMENTO              NOME,
    IMPRESSAO_MASCARA            BOOLEAN_STR,
    FILTRO_INICIAL               NOME,
    MARGEM_SUPERIOR              INTEGER,
    DATA_BASE_GUIAS_NAO_GERADAS  DATE,
    VERIFICA_GUIAS_NAO_GERADAS   BOOLEAN_STR DEFAULT 'T' COLLATE WIN_PTBR,
    HISTORICO_EXTRATO            NOME
);

CREATE TABLE CONFIGURACAO_SOCIAL (
    CODIGO      INTEGER NOT NULL,
    INSTRUCOES  OBSERVACAO
);

CREATE TABLE CONFIGURACAO_WEB (
    COD_CONF_WEB      CODIGO NOT NULL,
    MYSQL_LOCALHOST   DESCRICAO,
    MYSQL_BASE_DADOS  DESCRICAO,
    MYSQL_USUARIO     DESCRICAO,
    MYSQL_SENHA       DESCRICAO
);

CREATE TABLE CONSULTA_DADOS_CADASTRAIS (
    CODIGO                    CODIGO NOT NULL,
    COD_USUARIO               CODIGO,
    LOCAL_CONSULTA            NOME,
    DATA_CONSULTA             DATE,
    HORA_CONSULTA             TIME,
    COD_TABELA_RELACIONADA    NOME,
    TABELA_RELACIONADA        NOME,
    CNPJ                      CNPJ,
    CODIGO_SINDICAL           VARCHAR(20),
    NOMEFANTASIA              NOME,
    RAZAOSOCIAL               DESCRICAO,
    CNAE                      CNAE,
    CNAE_SECUNDARIO           OBSERVACAO,
    EMAIL                     NOME,
    ENDERECO_BAIRRO           NOME,
    ENDERECO_CEP              CEP,
    ENDERECO_CIDADE_COD_IBGE  INTEGER,
    ENDERECO_CIDADE           NOME,
    ENDERECO_COMPLEMENTO      NOME,
    ENDERECO_LOGRADOURO       NOME,
    ENDERECO_NUMERO           NOME,
    ENDERECO_UF               UF,
    INICIO_ATIVIDADE          DATE,
    SITE                      NOME,
    TELEFONE1                 TELEFONE,
    OBS                       OBSERVACAO,
    SITUACAO_CADASTRAL        NOME,
    ERRO_NA_CONSULTA          OBSERVACAO,
    PORTE                     NOME
);

CREATE TABLE CONSULTA_RECEITA (
    COD_CONSULTA_RECEITA  INTEGER NOT NULL,
    CNPJ                  CNPJ,
    DATA                  DATE,
    HORA                  TIME,
    USUARIO               CODIGO,
    STATUS_CONSULTA       DESCRICAO
);

CREATE TABLE CONSULTAS (
    CODIGO           CODIGO NOT NULL,
    DATA_EMISSAO     DATE,
    USUARIO_EMISSAO  CODIGO,
    VALOR_EMISSAO    VALOR,
    DATA_VENCIMENTO  DATE,
    ASSOCIADO        CODIGO,
    EMPRESA          CNPJ,
    PACIENTE         NOME,
    MEDICO           NOME,
    CONVENIO         CODIGO,
    QUITADA_ABERTO   BOOLEAN_STR,
    DATA_BAIXA       DATE,
    VALOR_BAIXA      VALOR,
    USUARIO_BAIXA    CODIGO,
    COMERCIARIO      INTEGER,
    FOTO             NOME,
    IDADE            INTEGER,
    PARENTESCO       NOME
);

CREATE TABLE CONTA_BANCARIA (
    COD_CONTA                VARCHAR(10) NOT NULL,
    COD_BANCO                BANCO,
    AGENCIA                  BANCO,
    DESCRICAO                NOME,
    CAIXA_INTERNO            BOOLEAN_STR,
    SALDO_INICIAL            VALOR,
    SALDO_INICIAL_DATA       DATE,
    PERMITE_MOVIMENTO_CAIXA  BOOLEAN_STR
);

CREATE TABLE CONTABILIDADE (
    CNPJ                      CNPJ NOT NULL,
    RAZAOSOCIAL               NOME NOT NULL,
    NOMEFANTASIA              NOME,
    ENDERECO_TIPOENDERECO     NOME,
    ENDERECO_LOGRADOURO       NOME,
    ENDERECO_NUMERO           NOME,
    ENDERECO_COMPLEMENTO      NOME,
    ENDERECO_BAIRRO           NOME,
    ENDERECO_CIDADE           NOME,
    ENDERECO_UF               UF,
    ENDERECO_CEP              CEP,
    TELEFONE1                 TELEFONE,
    TELEFONE2                 TELEFONE,
    CONTATO                   NOME,
    JF                        BOOLEAN_STR,
    DATACADASTRO              DATE,
    STATUS                    BOOLEAN_STR,
    QTE_EMPRESAS              QUANTIDADE,
    OBS                       OBSERVACAO,
    ENDERECO_CIDADE_COD_IBGE  CODIGO,
    COD_STATUS                CODIGO,
    ENVIO_GUIAS               CODIGO,
    ULTIMA_MOVIMENTACAO       DATE,
    EMAIL                     EMAIL
);

CREATE TABLE CONTAS_PAGAR (
    COD_CONTA_PAGAR               CODIGO NOT NULL,
    COD_CENTRO_CUSTO              CODIGO,
    COD_FORMA_PAGAMENTO           CODIGO,
    COD_USUARIO_CAD               CODIGO,
    COD_USUARIO_BAIXA             CODIGO,
    COD_BARRA                     COD_BARRA,
    DESCRICAO                     DESCRICAO,
    DATA_CAD                      DATE,
    HORA_CAD                      TIME,
    DATA_VENC                     DATE,
    VALOR                         VALOR,
    OBS                           OBSERVACAO,
    DATA_PAGAMENTO                DATE,
    VALOR_PAGAMENTO               VALOR,
    MULTA                         VALOR,
    JUROS                         VALOR,
    OUTROS                        VALOR,
    DESCONTO                      VALOR,
    DOCUMENTO_NUMERO              NOME,
    DOCUMENTO_TIPO                CODIGO,
    COD_FORNECEDOR                CHAVE_STR,
    COD_STATUS                    CODIGO,
    COD_PLANO_CONTA               CODIGO,
    COD_CONTA_BANCARIA            VARCHAR(10),
    COD_MOVIMENTO_CAIXA           CODIGO_EXTENSO,
    COD_CONTA_BANCARIA_MOVIMENTO  VARCHAR(10),
    DATA_REALIZACAO               DATE,
    VALOR_REALIZACAO              VALOR
);

CREATE TABLE CONTAS_RECEBER (
    CODIGO              CODIGO NOT NULL,
    ASSOCIADO           CODIGO,
    DATA_LANCAMENTO     DATE,
    USUARIO_LANCAMENTO  CODIGO,
    STATUS              BOOLEAN_STR,
    DATA_VENCIMENTO     DATE,
    VALOR               VALOR,
    DATA_BAIXA          DATE,
    MULTA_JUROS         VALOR,
    VALOR_BAIXA         VALOR,
    USUARIO_BAIXA       CODIGO,
    OBSERVACAO          OBSERVACAO
);

CREATE TABLE CONTATO_FORNECEDOR (
    CODIGO          CODIGO NOT NULL,
    COD_FORNECEDOR  CHAVE_STR,
    NOME            NOME,
    TELE1           TELEFONE,
    TELE2           TELEFONE,
    EMAIL           NOME,
    SKYPE           NOME,
    SETOR           NOME,
    OBS             OBSERVACAO
);

CREATE TABLE CONTROLE_STATUS (
    CODIGO         CODIGO NOT NULL,
    DATA           DATE,
    HORA           TIME,
    USUARIO        CODIGO,
    TABELA         BOOLEAN_STR,
    CODIGO_TABELA  CNPJ,
    MOTIVO         OBSERVACAO
);

CREATE TABLE CONV_COB_CANAIS_PAGAMENTO (
    COD_CANAIS             CODIGO NOT NULL,
    COD_CONVENIO_COBRANCA  CODIGO,
    COD_CANAL_NO_LAYOUT    CHAVE_STR,
    DESCRICAO              DESCRICAO
);

CREATE TABLE CONV_COB_TABELA_TARIFAS (
    COD_CONV_COB_TABELA_TARIFAS  CODIGO NOT NULL,
    COD_CONVENIO_COBRANCA        CODIGO,
    DATA_CADASTRO                DATE,
    STATUS                       BOOLEAN_STR,
    DESCRICAO                    DESCRICAO
);

CREATE TABLE CONV_COB_TARIFA_CANAIS (
    COD_TARIFA_CANAIS  CODIGO NOT NULL,
    COD_TABELA         CODIGO,
    COD_CANAIS         CODIGO,
    VALOR              VALOR
);

CREATE TABLE CONVENCAO (
    CODIGO            INTEGER NOT NULL,
    DATA_INICIO       DATE,
    DATA_FIM          DATE,
    DATA_BASE         DATE,
    PERCENTUAL_MULTA  PERCENTUAL,
    PERCENTUAL_JUROS  PERCENTUAL,
    EXERCICIO         INTEGER,
    DESCRICAO         NOME
);

CREATE TABLE CONVENCAO_BASE (
    COD_CONV_BASE  CODIGO NOT NULL,
    COD_CONVENCAO  CODIGO,
    COD_BASE       CODIGO
);

CREATE TABLE CONVENCAO_SEGMENTO (
    COD_CONV_SEGMENTO  CODIGO NOT NULL,
    COD_CONVENCAO      CODIGO,
    COD_SEGMENTO       CODIGO
);

CREATE TABLE CONVENCAO_VENCIMENTOS (
    COD_CONV_VENCIMENTOS        CODIGO NOT NULL,
    COD_CONVENCAO               CODIGO,
    DATA_DESCONTO               DATE,
    DATA_VENCIMENTO             DATE,
    LIMITE_INDIVIDUAL_DESCONTO  VALOR,
    PERCENTUAL_CONTRIBUICAO     PERCENTUAL,
    COMPLEMENTAR                SMALLINT,
    DESCRICAO                   NOME
);

CREATE TABLE CONVENIO (
    CODIGO                 CODIGO NOT NULL,
    RAZAOSOCIAL            NOME NOT NULL,
    NOMEFANTASIA           NOME,
    ENDERECO_TIPOENDERECO  NOME,
    ENDERECO_LOGRADOURO    NOME,
    ENDERECO_NUMERO        NOME,
    ENDERECO_COMPLEMENTO   NOME,
    ENDERECO_BAIRRO        NOME,
    ENDERECO_CIDADE        NOME,
    ENDERECO_UF            UF,
    ENDERECO_CEP           CEP,
    TELEFONE1              TELEFONE,
    TELEFONE2              TELEFONE,
    EMAIL                  NOME,
    CONTATO                NOME,
    JF                     BOOLEAN_STR,
    DATACADASTRO           DATE,
    STATUS                 BOOLEAN_STR,
    TIPO_CONVENIO          BOOLEAN_STR,
    PERCENTUAL_DESCONTO    VALOR,
    CNPJ                   CNPJ,
    OBSERVACAO             OBSERVACAO
);

CREATE TABLE CONVENIO_BANCARIO (
    COD_CONVENIO_BANCO     INTEGER NOT NULL,
    NOME_CONVENIO_BANCO    NOME,
    PASTA_ORIGEM_RETORNO   NOME,
    PASTA_DESTINO_RETORNO  NOME,
    CONTA_BANCARIA         ABREVIATURA,
    BANCO                  VARCHAR(3)
);

CREATE TABLE CONVENIO_COBRANCA (
    COD_CONVENIO_COBRANCA            CODIGO NOT NULL,
    COD_BANCO                        VARCHAR(3),
    COD_PADRAO_BANCARIO              CODIGO,
    COD_CONTA_BANCARIA               VARCHAR(10),
    CODIGO_DO_CEDENTE                DESCRICAO COLLATE WIN_PTBR,
    DESCRICAO                        DESCRICAO,
    DATA_LIBERACAO                   DATE,
    NUMERO_CONVENIO                  DESCRICAO COLLATE WIN_PTBR,
    CONTA                            VARCHAR(10),
    CONTA_DV                         SMALLINT,
    AGENCIA                          VARCHAR(10),
    AGENCIA_DV                       SMALLINT,
    CARTEIRA                         VARCHAR(10),
    GERA_REMESSA                     BOOLEAN_STR,
    ATIVO                            BOOLEAN_STR,
    EXTENSAO_ARQUIVO_RETORNO         VARCHAR(5),
    ACEITE                           VARCHAR(5),
    ESPECIE_DO_DOCUMENTO             VARCHAR(5),
    NOSSO_NUMERO                     NOSSO_NUMERO,
    PERCENTUAL_JUROS                 PERCENTUAL,
    PERCENTUAL_MULTA                 PERCENTUAL,
    PERCENTUAL_DESCONTO              VALOR,
    NUMERO_ULTIMA_REMESSA            SMALLINT,
    LOCAL_ARQUIVO_RETORNO            DIRETORIO,
    LOCAL_ARQUIVO_REMESSA            DIRETORIO,
    EXTENSAO_ARQUIVO_REMESSA         VARCHAR(5),
    MOVER_ARQUIVOS_PROCESSADOS_PARA  DIRETORIO,
    FORCA_EXTENSAO_NOS_RETORNOS      BOOLEAN_STR COLLATE WIN_PTBR,
    PERMITE_ALTERAR_VENCIMENTO       BOOLEAN_STR,
    DIAS_VENC_COMPLEMENTO_VALOR      SMALLINT,
    TIPO_CARTEIRA                    NOME,
    CARACTERISTICA_TITULO            NOME,
    LAYOUT_REMESSA                   VARCHAR(20),
    REGISTRA_VIA_WS                  BOOLEAN_STR,
    NOVO_BOLETO_PARA_REGISTRO        BOOLEAN_STR,
    PERCENTUAL_RATEIO                PERCENTUAL,
    CONTA_EXTRATO_BANCARIO           NOME
);

CREATE TABLE CONVENIO_COBRANCA_CONVECAO (
    CODIGO                 CODIGO NOT NULL,
    COD_CONVENCAO          CODIGO,
    COD_CONVENIO_COBRANCA  CODIGO,
    COD_USUARIO            CODIGO,
    DATA_CAD               DATE
);

CREATE TABLE CONVENIO_TIPO_SERV_ESPECIALID (
    CODIGO                     CODIGO NOT NULL,
    COD_ESPECIALIDADE_MEDICA   CODIGO,
    COD_CONVENIO_TIPO_SERVICO  CODIGO
);

CREATE TABLE CONVENIO_TIPO_SERV_EXCESSAO (
    CODIGO                     CODIGO NOT NULL,
    COD_STATUS_ASSOCIADO       CODIGO,
    COD_PERIODICIDADE          CODIGO,
    COD_TIPO_SERVICO_CONVENIO  CODIGO,
    MAXIMO_LIBERAR             INTEGER,
    QUANTIDADE_GRATIS          INTEGER,
    LIBERAR_AVISANDO           INTEGER,
    MENSALIDADES_VERIFICAR     INTEGER,
    VALIDADE_DIAS              INTEGER,
    VALIDADE_TIPO              NOME
);

CREATE TABLE CONVENIO_TIPO_SERVICO (
    CODIGO                      CODIGO NOT NULL,
    COD_CONVENIO                CODIGO,
    COD_TIPO_SERVICO            CODIGO,
    COD_IMPRESSORA              CODIGO,
    DESCRICAO                   NOME,
    MODELO_GUIA                 NOME,
    IMPRIMIR                    BOOLEAN_STR,
    MAXIMO_LIBERAR              INTEGER,
    QUANTIDADE_GRATIS           INTEGER,
    IMPRESSAO_VISUALIZAR        BOOLEAN_STR,
    IMPRESSAO_OPCOES_IMPRESSAO  BOOLEAN_STR,
    LIBERAR_AVISANDO            INTEGER,
    MENSALIDADES_VERIFICAR      INTEGER,
    VALIDADE_DIAS               INTEGER,
    VALIDADE_TIPO               NOME,
    COD_PERIODICIDADE           CODIGO,
    SITUACAO                    BOOLEAN_STR,
    OBS_PADRAO                  OBSERVACAO,
    POSSUI_AGENDA               BOOLEAN_STR COLLATE WIN_PTBR,
    DEPENDENTE_SEMPRE_PAGA      BOOLEAN_STR
);

CREATE TABLE CONVITE (
    CODIGO         CODIGO NOT NULL,
    NOME           NOME,
    NASCIMENTO     DATE,
    DATAEMISSAO    DATE,
    DATAVALIDADE   DATE,
    USUARIO        CODIGO,
    TIPOCONVIDADO  NOME,
    VALOR          VALOR,
    RESPONSAVEL    NOME,
    ASSOCIADO      CODIGO,
    CODIGOBARRAS   CODIGO_BARRAS,
    HORA_CADASTRO  TIME
);

CREATE TABLE CURIOSIDADES (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  OBSERVACAO
);

CREATE TABLE DATAS_COMEMORATIVAS (
    CODIGO     CODIGO,
    DATA       ABREVIATURA,
    DESCRICAO  NOME
);

CREATE TABLE DECLARACAO_ARQUIVO (
    CODIGO                  INTEGER NOT NULL,
    DESCRICAO               NOME,
    CAMINHO_ARQUIVO         DIRETORIO,
    COD_TABELA_RELACIONADA  CODIGO
);

CREATE TABLE DEPENDENTE (
    CODIGO              CODIGO NOT NULL,
    COD_STATUS          CODIGO,
    ASSOCIADO           CODIGO,
    PARENTESCO          CODIGO,
    DEPENDENTE          CODIGO,
    NOME                NOME,
    NASCIMENTO          DATE,
    FOTO                FOTO,
    EXISTE_FOTO         BOOLEAN_STR,
    COD_BARRA_CARTEIRA  COD_BARRA,
    CPF                 CPF
);

CREATE TABLE DEPENDENTE_COMERCIARIO (
    CODIGO              CODIGO NOT NULL,
    DEPENDENTE          CODIGO,
    COMERCIARIO         CODIGO,
    NOME                NOME,
    PARENTESCO          CODIGO,
    NASCIMENTO          DATE,
    EXISTE_FOTO         BOOLEAN_STR,
    FOTO                NOME,
    COD_STATUS          CODIGO,
    COD_BARRA_CARTEIRA  COD_BARRA,
    CPF                 CPF
);

CREATE TABLE DEVOLUCAO_DOCUMENTOS (
    COD_DEVOLUCAO           CODIGO NOT NULL,
    COD_USUARIO             CODIGO,
    COD_DOCUMENTO_TIPO      CODIGO,
    COD_MOTIVO_DEVOLUCAO    CODIGO,
    DATA_CADASTRO           DATE,
    DATA_DEVOLUCAO          DATE,
    COMPETENCIA             NOME,
    OBSERVACAO              OBSERVACAO,
    TABELA_RELACIONADA      NOME,
    COD_TABELA_RELACIONADA  NOME
);

CREATE TABLE DIGITAIS (
    ID         INTEGER NOT NULL,
    DEDO       INTEGER NOT NULL,
    TEMPLATE   BLOB SUB_TYPE 0 SEGMENT SIZE 400,
    ID_PESSOA  INTEGER,
    DATA_CAD   DATE,
    HORA_CAD   TIME
);

CREATE TABLE DISPENSA_RECOLHIMENTO (
    COD_DISPENSA_RECOLHIMENTO  CODIGO NOT NULL,
    COD_USUARIO                CODIGO,
    TIPO_CONTRIBUICAO          NOME,
    PERIODO_DISPENSA           DATE,
    DATA_CADASTRO              DATE,
    HORA_CADASTRO              TIME,
    MOTIVO                     OBSERVACAO
);

CREATE TABLE DOCUMENTO_CONTROLE (
    COD_CONTROLE       CODIGO NOT NULL,
    DESCRICAO          OBSERVACAO,
    DATA               DATE,
    HORA               TIME,
    USUARIO            CODIGO,
    DOCUMENTO_DESTINO  CODIGO,
    DOCUMENTO_TIPO     CODIGO
);

CREATE TABLE DOCUMENTO_DESTINO (
    COD_DESTINO_DOCUMENTO  CODIGO NOT NULL,
    DESCRICAO              NOME
);

CREATE TABLE DOCUMENTO_TIPO (
    COD_DOCUMENTO_TIPO  CODIGO NOT NULL,
    DESCRICAO           NOME,
    ABREVIATURA         ABREVIATURA,
    LOCAL_USO           NOME
);

CREATE TABLE EMAIL_ENVIADO (
    ID              CODIGO_EXTENSO NOT NULL,
    DATA_HORA       TIMESTAMP,
    ASSUNTO         DIRETORIO,
    DESTINATARIO    OBSERVACAO,
    CORPO           OBSERVACAO,
    ANEXO           OBSERVACAO,
    ARQUIVO_EML     OBSERVACAO,
    ERRO_MSG        OBSERVACAO,
    ERRO_DATA_HORA  OBSERVACAO
);

CREATE TABLE EMAILS_SUPORTE (
    CODIGO       INTEGER NOT NULL,
    TEXTO_EMAIL  OBSERVACAO,
    DESCRICAO    NOME,
    DATA         DATE,
    USUARIO      NOME
);

CREATE TABLE EMPRESA (
    CNPJ                           CNPJ NOT NULL,
    CONTADOR                       CNPJ,
    USUARIO                        CODIGO,
    COD_BASE_TERRITORIAL           CODIGO,
    COD_STATUS                     CODIGO,
    COD_SEGMENTO                   CODIGO,
    COD_PORTE                      CODIGO,
    COD_ENTIDADE                   CODIGO,
    RAZAOSOCIAL                    DESCRICAO NOT NULL,
    NOMEFANTASIA                   NOME,
    ENDERECO_TIPOENDERECO          NOME,
    ENDERECO_LOGRADOURO            NOME,
    ENDERECO_NUMERO                NOME,
    ENDERECO_COMPLEMENTO           NOME,
    ENDERECO_BAIRRO                NOME,
    ENDERECO_CIDADE                NOME,
    ENDERECO_UF                    UF,
    ENDERECO_CEP                   CEP,
    TELEFONE1                      TELEFONE,
    TELEFONE2                      TELEFONE,
    CONTATO                        NOME,
    JF                             BOOLEAN_STR,
    DATA_CADASTRO                  DATE,
    STATUS                         BOOLEAN_STR,
    CNAE                           CNAE,
    NUMERO_EMPREGADOS              QUANTIDADE,
    INADIMPLENTE                   BOOLEAN_STR,
    EXTENSAO                       BOOLEAN_STR,
    MOTIVO_INATIVACAO              INTEGER,
    PLANO_SAUDE                    BOOLEAN_STR,
    OBS                            OBSERVACAO,
    ONDE_VEIO_OS_DADOS             OBSERVACAO,
    INICIO_ATIVIDADE               DATE,
    INICIO_COBRANCA                DATE,
    ENDERECO_CIDADE_COD_IBGE       CODIGO,
    NUMERO_EMPREGADOS_CATEGORIA    QUANTIDADE,
    GERAR_GUIA_COM_VALOR           BOOLEAN_STR DEFAULT 'F',
    SITE                           NOME,
    FLAG                           VARCHAR(4),
    ULTIMA_MOVIMENTACAO            DATE,
    ULTIMA_VERIFICACAO_AUTOMATICA  DATE,
    EMAIL                          EMAIL
);

CREATE TABLE EMPRESA_CONTATOS (
    CODIGO   CODIGO NOT NULL,
    EMPRESA  CNPJ,
    NOME     NOME,
    TELE1    TELEFONE,
    TELE2    TELEFONE,
    EMAIL    NOME,
    SKYPE    NOME,
    SETOR    NOME,
    OBS      OBSERVACAO
);

CREATE TABLE EMPRESA_CONVENIO (
    COD_EMPRESA_CONVENIO  CODIGO NOT NULL,
    COD_CONVENIO          CODIGO,
    EMPRESA               CNPJ
);

CREATE TABLE EMPRESA_GRUPO (
    CODIGO       CODIGO NOT NULL,
    EMPRESA      CNPJ,
    COD_GRUPO    CODIGO,
    DATA_INICIO  DATE,
    DATA_FIM     DATE
);

CREATE TABLE EMPRESA_MUDANCA (
    CODIGO                     CODIGO NOT NULL,
    COD_USUARIO                CODIGO,
    EMPRESA                    CNPJ,
    OBSERVACAO                 OBSERVACAO,
    DATA                       DATE,
    HORA                       TIME,
    MOTIVO                     NOME,
    COD_MOTIVO                 CODIGO,
    COD_STATUS_ANTERIOR        CODIGO,
    COD_STATUS_NOVO            CODIGO,
    COD_JUSTIFICATIVA_MUDANCA  CODIGO
);

CREATE TABLE EMPRESA_MUDANCA_MOTIVO (
    COD_MOTIVO_MUDANCA_STATUS  CODIGO NOT NULL,
    DESCRICAO                  DESCRICAO
);

CREATE TABLE EMPRESA_PORTE (
    COD_PORTE  CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE EMPRESA_STATUS (
    COD_EMPRESA_STATUS  CODIGO NOT NULL,
    DESCRICAO           NOME,
    COR                 NOME,
    PESQUISA            BOOLEAN_STR,
    MOVIMENTA           BOOLEAN_STR,
    GERA_GUIAS          BOOLEAN_STR,
    ASSOCIAR            BOOLEAN_STR DEFAULT 'T',
    VISUALIZA_GUIAS     BOOLEAN_STR,
    ALTERA_CNPJ         BOOLEAN_STR
);

CREATE TABLE ENQUADRAMENTO_VERIFICACAO (
    CODIGO               CODIGO NOT NULL,
    DATA                 DATE,
    HORA                 TIME,
    COD_USUARIO          CODIGO,
    CNPJ                 CNPJ,
    COD_CNAE             CNAE,
    COD_MUNICIPIO        CODIGO,
    ATIVIDADE_PRINCIPAL  DESCRICAO,
    MUNICIPIO            DESCRICAO,
    UF                   UF,
    RESULTADO            BOOLEAN_STR,
    RESULTADO_DESCRICAO  OBSERVACAO,
    COD_ENTIDADE         CODIGO
);

CREATE TABLE ENTIDADE_EVENTO (
    COD_ENTIDADE_EVENTO  CODIGO NOT NULL,
    COD_STATUS           CODIGO,
    DESCRICAO            DESCRICAO,
    DATA_INICIO          DATE,
    DATA_FIM             DATE,
    HORA_INICIO          TIME,
    HORA_FIM             TIME,
    LOCAL                OBSERVACAO,
    OBS                  OBSERVACAO
);

CREATE TABLE ENTIDADE_EVENTO_PARTICIPANTE (
    CODIGO                     CODIGO NOT NULL,
    COD_ENTIDADE_EVENTO        CODIGO,
    COD_INTEGRANTE             CODIGO,
    PRESENCA_CONFIRMADA        BOOLEAN_STR,
    DATA_CAD                   DATE,
    COD_USUARIO_CAD            CODIGO,
    DATA_CONFIRMACAO_PRESENCA  DATE
);

CREATE TABLE ENTIDADE_MANDATO (
    COD_ENTIDADE_MANDATO   CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    DATA_INICIO            DATE,
    DATA_FIM               DATE,
    OBS                    OBSERVACAO,
    COD_STATUS             CODIGO
);

CREATE TABLE ENTIDADE_MUDANCA_STATUS (
    CODIGO                 CODIGO NOT NULL,
    COD_USUARIO            CODIGO,
    COD_ENTIDADE_SINDICAL  CODIGO,
    OBSERVACAO             OBSERVACAO,
    DATA                   DATE,
    HORA                   TIME,
    COD_STATUS_ANTERIOR    CODIGO,
    COD_STATUS_NOVO        CODIGO,
    COD_FILIAL             CODIGO,
    MOTIVO                 OBSERVACAO,
    COD_MOTIVO             CODIGO
);

CREATE TABLE ENTIDADE_SINDICAL (
    COD_ENTIDADE_SINDICAL          CODIGO NOT NULL,
    CNPJ                           CNPJ,
    CONTADOR                       CNPJ,
    USUARIO                        CODIGO,
    COD_BASE_TERRITORIAL           CODIGO,
    COD_STATUS                     CODIGO,
    COD_SEGMENTO                   CODIGO,
    RAZAOSOCIAL                    DESCRICAO NOT NULL COLLATE WIN_PTBR,
    CODIGO_SINDICAL                CODIGO_SINDICAL COLLATE WIN_PTBR,
    NOMEFANTASIA                   NOME,
    ENDERECO_TIPOENDERECO          NOME,
    ENDERECO_LOGRADOURO            NOME,
    ENDERECO_NUMERO                NOME,
    ENDERECO_COMPLEMENTO           NOME,
    ENDERECO_BAIRRO                NOME,
    ENDERECO_CIDADE                NOME,
    ENDERECO_CIDADE_COD_IBGE       CODIGO,
    ENDERECO_UF                    UF,
    ENDERECO_CEP                   CEP,
    TELEFONE1                      TELEFONE,
    TELEFONE2                      TELEFONE,
    EMAIL                          NOME,
    CONTATO                        NOME,
    JF                             BOOLEAN_STR,
    DATA_CADASTRO                  DATE,
    STATUS                         BOOLEAN_STR,
    CNAE                           CNAE,
    NUMERO_EMPREGADOS              QUANTIDADE,
    INADIMPLENTE                   BOOLEAN_STR,
    EXTENSAO                       BOOLEAN_STR,
    MOTIVO_INATIVACAO              INTEGER,
    PLANO_SAUDE                    BOOLEAN_STR,
    OBS                            OBSERVACAO,
    ONDE_VEIO_OS_DADOS             OBSERVACAO,
    INICIO_ATIVIDADE               DATE,
    INICIO_COBRANCA                DATE,
    NUMERO_EMPREGADOS_CATEGORIA    QUANTIDADE,
    GERAR_GUIA_COM_VALOR           BOOLEAN_STR DEFAULT 'F',
    SITE                           NOME,
    GRAU_ENTIDADE                  NOME,
    FLAG                           VARCHAR(4),
    DENOMINACAO                    OBSERVACAO,
    ULTIMA_VERIFICACAO_AUTOMATICA  DATE,
    FILIACAO_CONFEDERACAO          CODIGO_SINDICAL,
    FILIACAO_FEDERACAO             CODIGO_SINDICAL,
    FILIACAO_CENTRAIS              CODIGO_SINDICAL
);

CREATE TABLE ENTIDADE_SINDICAL_ARQUIVOS (
    COD_ENTIDADE_ARQUIVO   CODIGO_EXTENSO NOT NULL,
    COD_ENTIDADE_CEDENTES  CODIGO,
    NSA                    CODIGO,
    NOME                   OBSERVACAO,
    DATA                   DATE,
    HASH_CODE              NOME
);

CREATE TABLE ENTIDADE_SINDICAL_ARQUIVOS_DET (
    COD_ENTIDADE_ARQUIVO_DET  CODIGO_EXTENSO NOT NULL,
    COD_ENTIDADE_ARQUIVO      CODIGO_EXTENSO,
    DATA_CREDITO              DATE,
    VALOR_RATEIO              VALOR
);

CREATE TABLE ENTIDADE_SINDICAL_BASE (
    COD_BASE               CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    COD_AREA_GEOECONOMICA  CODIGO,
    COD_GRUPO              CODIGO,
    COD_CLASSE             CODIGO,
    COD_ABRANGENCIA        CODIGO,
    CATEGORIA              OBSERVACAO,
    BASE_TERRITORIAL       OBSERVACAO
);

CREATE TABLE ENTIDADE_SINDICAL_BASE_CIDADES (
    COD_MUNICIPIO_IBGE          CODIGO,
    DESCRICAO                   DESCRICAO,
    FAIXA_CEP_INICIAL           CEP,
    FAIXA_CEP_FINAL             CEP,
    COD_BASE_CID                CODIGO NOT NULL,
    COD_ENTIDADE_SIND_BASE_SEG  CODIGO
);

CREATE TABLE ENTIDADE_SINDICAL_BASE_EXCLUSAO (
    COD_BASE_EXCLUSAO           CODIGO NOT NULL,
    COD_ENTIDADE_BASE           CODIGO,
    COD_MUNICIPIO_IBGE          CODIGO,
    DESCRICAO                   DESCRICAO,
    FAIXA_CEP_INICIAL           CEP,
    FAIXA_CEP_FINAL             CEP,
    COD_ENTIDADE_SIND_BASE_SEG  CODIGO
);

CREATE TABLE ENTIDADE_SINDICAL_BASE_SEG (
    COD_BASE                    INTEGER,
    COD_SEGMENTO                INTEGER,
    COD_ENTIDADE_SIND_BASE_SEG  INTEGER NOT NULL
);

CREATE TABLE ENTIDADE_SINDICAL_CARGO (
    COD_CARGO_ENTIDADE_SINDICAL  CODIGO NOT NULL,
    DESCRICAO                    NOME
);

CREATE TABLE ENTIDADE_SINDICAL_CEDENTES (
    COD_ENTIDADE_CEDENTES  CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO NOT NULL,
    CODIGO_DO_CEDENTE      DESCRICAO,
    CONTA                  NOME,
    CONTA_DV               ABREVIATURA,
    AGENCIA                ABREVIATURA,
    AGENCIA_DV             ABREVIATURA,
    DESCRICAO              DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_CONTATOS (
    CODIGO                 CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    TRATAMENTO             NOME,
    APELIDO                NOME,
    NOME                   NOME,
    TELE1                  TELEFONE,
    TELE2                  TELEFONE,
    EMAIL                  NOME,
    SKYPE                  NOME,
    SETOR                  NOME,
    OBS                    OBSERVACAO
);

CREATE TABLE ENTIDADE_SINDICAL_ENDERECOS (
    COD_ENT_SIND_ENDERECO     CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL     CODIGO,
    ENDERECO_LOGRADOURO       NOME,
    ENDERECO_NUMERO           NOME,
    ENDERECO_COMPLEMENTO      NOME,
    ENDERECO_BAIRRO           NOME,
    ENDERECO_CIDADE           NOME,
    ENDERECO_UF               UF,
    ENDERECO_CEP              CEP,
    ENDERECO_CIDADE_COD_IBGE  CODIGO,
    DESCRICAO                 NOME COLLATE WIN_PTBR
);

CREATE TABLE ENTIDADE_SINDICAL_GRUPO (
    CODIGO                 CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    COD_GRUPO              CODIGO,
    DATA_INICIO            DATE,
    DATA_FIM               DATE
);

CREATE TABLE ENTIDADE_SINDICAL_INTEGRANTES (
    COD_INTEGRANTE               CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL        CODIGO,
    COD_CARGO_ENTIDADE_SINDICAL  CODIGO,
    COD_STATUS                   CODIGO,
    DATA_CAD                     DATE,
    NOME                         NOME,
    CPF                          CPF,
    RG                           RG,
    DATA_NASC                    DATE,
    ENDERECO_LOGRADOURO          NOME,
    ENDERECO_NUMERO              NOME,
    ENDERECO_COMPLEMENTO         NOME,
    ENDERECO_BAIRRO              NOME,
    ENDERECO_CIDADE              NOME,
    ENDERECO_UF                  UF,
    ENDERECO_CEP                 CEP,
    TELEFONE1                    TELEFONE,
    TELEFONE2                    TELEFONE,
    EMAIL                        NOME,
    ENDERECO_CIDADE_COD_IBGE     CODIGO,
    COD_ENTIDADE_MANDATO         CODIGO,
    COD_TRATAMENTO               CODIGO,
    SEXO                         BOOLEAN_STR,
    RECEBE_OFICIO                BOOLEAN_STR COLLATE WIN_PTBR
);

CREATE TABLE ENTIDADE_SINDICAL_LOG_FILIACAO (
    CODIGO                 CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    COD_USUARIO            CODIGO,
    DESCRICAO              NOME,
    DATA                   DATE,
    HORA                   TIME,
    NOME_COMPUTADOR        NOME,
    ORIGINAL               NOME,
    ALTERADO_PARA          NOME,
    OBS                    OBSERVACAO,
    OBS_SISTEMA            OBSERVACAO,
    MOTIVO                 OBSERVACAO,
    COD_SINDICAL_ANTIGO    NOME,
    COD_SINDICAL_NOVO      NOME,
    NOME_ENTIDADE          DESCRICAO,
    ONDE_VEIO_OS_DADOS     OBSERVACAO,
    DATA_INICIO            DATE,
    DATA_TERMINO           DATE
);

CREATE TABLE ENTIDADE_SINDICAL_REP_ABRAN (
    COD_ABRANGENCIA  CODIGO NOT NULL,
    DESCRICAO        DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_REP_AREA_GEO (
    COD_AREA_GEOECONOMICA  CODIGO NOT NULL,
    DESCRICAO              DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_REP_CLASSE (
    COD_CLASSE  CODIGO NOT NULL,
    DESCRICAO   DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_REP_GRUPO (
    COD_GRUPO  CODIGO NOT NULL,
    DESCRICAO  DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_REQUER (
    COD_ENTIDADE_REQUERIMENTO  CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL      CODIGO,
    COD_STATUS_REQUERIMENTO    CODIGO,
    ID                         ABREVIATURA,
    COD_REQUERIMENTO           CHAVE_STR,
    DATA                       DATE,
    PROCESSO                   CHAVE_STR
);

CREATE TABLE ENTIDADE_SINDICAL_SEG_CNAE (
    CODIGO        CODIGO NOT NULL,
    COD_CNAE      CNAE,
    COD_SEGMENTO  CODIGO
);

CREATE TABLE ENTIDADE_SINDICAL_SEGMENTO (
    COD_SEGMENTO  CODIGO NOT NULL,
    DESCRICAO     DESCRICAO
);

CREATE TABLE ENTIDADE_SINDICAL_STATUS (
    COD_ENTIDADE_SINDICAL_STATUS  CODIGO NOT NULL,
    DESCRICAO                     NOME,
    COR                           NOME,
    PESQUISA                      BOOLEAN_STR DEFAULT 'T',
    GERA_GUIAS                    BOOLEAN_STR DEFAULT 'T'
);

CREATE TABLE ENTIDADE_SINDICAL_TELEFONES (
    COD_ENT_SIND_TELEFONE  CODIGO NOT NULL,
    COD_ENTIDADE_SINDICAL  CODIGO,
    COD_TIPO_TELEFONE      CODIGO,
    TELEFONE               TELEFONE
);

CREATE TABLE EQUIPAMENTOS (
    CODIGO          INTEGER NOT NULL,
    HD              NOME,
    DESCRICAO       NOME,
    DATA_LIBERACAO  DATE,
    USUARIOS        NOME
);

CREATE TABLE ERRO_PROESSAMENTO_GUIAS (
    NOSSO_NUMERO            NOME,
    VALOR                   VALOR,
    VALOR_PAGO              VALOR,
    DATA_PAGAMENTO          DATE,
    DATA_LANCAMENTO         DATE,
    TIPO                    NOME,
    DATA_VENCIMENTO         DATE,
    OBS                     OBSERVACAO,
    ARQUIVO                 NOME,
    CONVENIO                NOME,
    CNPJ_EMPRESA            CNPJ,
    CODIGO_ERRO             CODIGO,
    LINHA                   VARCHAR(255),
    TARIFA                  VALOR,
    COD_PROCESSAMENTO       CODIGO,
    COD_CONSULTA_RECEITA    CODIGO,
    COD_TABELA_RELACIONADA  NOME,
    TABELA_RELACIONADA      NOME,
    COD_PROC_DETALHE        CODIGO,
    IMPORTADO_ARRECADACAO   BOOLEAN_STR
);

CREATE TABLE ESPECIALIDADES_MEDICAS (
    COD_ESPECIALIDADE_MEDICA  CODIGO NOT NULL,
    DESCRICAO                 NOME
);

CREATE TABLE ESTADOCIVIL (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE ESTORNO (
    COD_ESTORNO         CODIGO NOT NULL,
    USUARIO             CODIGO,
    COD_ESTORNO_STATUS  CODIGO,
    COD_ESTORNO_MOTIVO  CODIGO,
    DATA_INICIO         DATE,
    DATA_FIM            DATE,
    OBSERVACAO          OBSERVACAO,
    DATA_CAD            DATE,
    HORA_CAD            TIME,
    TABELA_RELACIONADA  NOME,
    CODIGO_CHAVE        CHAVE_STR,
    CNPJ                CNPJ
);

CREATE TABLE ESTORNO_ARRECADACAO_DETALHE (
    COD_ESTORNO_DETALHE      INTEGER,
    DATA_CAD                 DATE,
    HORA_CAD                 TIME,
    COD_USUARIO_CAD          CODIGO,
    VALOR_ESTORNADO          VALOR,
    OBS                      OBSERVACAO,
    CODIGO                   CODIGO NOT NULL,
    COD_ARRECADACAO_DETALHE  CODIGO
);

CREATE TABLE ESTORNO_CONTATOS (
    COD_ESTORNO_CONTATOS  CODIGO NOT NULL,
    COD_ESTORNO           CODIGO,
    NOME                  DESCRICAO,
    EMAIL                 DESCRICAO,
    TELEFONE              TELEFONE
);

CREATE TABLE ESTORNO_DETALHE (
    COD_ESTORNO_DETALHE  CODIGO NOT NULL,
    COD_ESTORNO          CODIGO,
    COD_USUARIO          CODIGO,
    COD_ARRECADACAO      CODIGO_EXTENSO,
    DATA_CAD             DATE,
    HORA_CAD             TIME
);

CREATE TABLE ESTORNO_EVENTO (
    COD_ESTORNO_EVENTO  CODIGO NOT NULL,
    COD_ESTORNO         CODIGO,
    USUARIO             CODIGO,
    DATA                DATE,
    HORA                TIME,
    DESCRICAO           OBSERVACAO
);

CREATE TABLE ESTORNO_GUIAS (
    COD_ESTORNO_GUIAS      CODIGO NOT NULL,
    TIPO_GUIA              DESCRICAO,
    VALOR_PAGO             VALOR,
    VALOR_CREDITO          VALOR,
    VALOR_TARIFA           VALOR,
    DATA_PAGAMENTO         DATE,
    DATA_CREDITO           DATE,
    DATA_VENCIMENTO        DATE,
    PROCESSAMENTO_DETALHE  CODIGO
);

CREATE TABLE ESTORNO_MOTIVO (
    COD_ESTORNO_MOTIVO  CODIGO NOT NULL,
    DESCRICAO           DESCRICAO
);

CREATE TABLE ESTORNO_STATUS (
    COD_ESTORNO_STATUS  CODIGO NOT NULL,
    DESCRICAO           DESCRICAO,
    COR                 DESCRICAO
);

CREATE TABLE ETIQUETAS_ENVELOPES (
    CODIGO                  INTEGER NOT NULL,
    NOME                    NOME,
    TIPO                    NOME,
    LARGURA                 INTEGER,
    ALTURA                  INTEGER,
    MARGEM_TOPO             INTEGER,
    MARGEM_ESQUERDA         INTEGER,
    MARGEM_TOPO_TIMBRE      INTEGER,
    MARGEM_ESQUERDA_TIMBRE  INTEGER,
    RETRATO_PAISAGEM        BOOLEAN_STR DEFAULT 'R',
    MARGEM_TOP_LINHA1       DECIMAL(15,6),
    MARGEM_LEFT_LINHA1      DECIMAL(15,6),
    MARGEM_TOP_LINHA2       DECIMAL(15,6),
    MARGEM_LEFT_LINHA2      DECIMAL(15,6),
    MARGEM_TOP_LINHA3       DECIMAL(15,6),
    MARGEM_LEFT_LINHA3      DECIMAL(15,6),
    MARGEM_TOP_LINHA4       DECIMAL(15,6),
    MARGEM_LEFT_LINHA4      DECIMAL(15,6),
    MARGEM_TOP_LINHA5       DECIMAL(15,6),
    MARGEM_LEFT_LINHA5      DECIMAL(15,6),
    MARGEM_LEFT_ITEM6       DECIMAL(15,6),
    MARGEM_LEFT_ITEM7       DECIMAL(15,6),
    MARGEM_LEFT_ITEM8       DECIMAL(15,6),
    MARGEM_BASE             INTEGER
);

CREATE TABLE EXAME_VALOR (
    CODIGO          CODIGO NOT NULL,
    COD_TIPO_EXAME  CODIGO,
    CONVENIO        CODIGO,
    VALOR           VALOR,
    EXPORTADO       BOOLEAN_STR COLLATE WIN_PTBR
);

CREATE TABLE EXAMES (
    CODIGO           CODIGO NOT NULL,
    COD_CONVENIO     CODIGO,
    COD_USUARIO      CODIGO,
    ASSOCIADO        CODIGO,
    PACIENTE         NOME,
    IDADE            INTEGER,
    PARENTESCO       NOME,
    DATA_LANCAMENTO  DATE,
    MEDICO           NOME COLLATE WIN_PTBR,
    OBS              OBSERVACAO COLLATE WIN_PTBR,
    EXPORTADO        BOOLEAN_STR COLLATE WIN_PTBR,
    VALOR            VALOR,
    DATA_VENCIMENTO  DATE,
    SITUACAO         BOOLEAN_STR
);

CREATE TABLE EXTENSAO_BASE (
    COD_EXTENSAO  CODIGO NOT NULL,
    CIDADES       OBSERVACAO,
    DATA_BASE     DATE
);

CREATE TABLE EXTRATO_BANCARIO (
    CONTA      NOME,
    DATA_MOV   DATE NOT NULL,
    NR_DOC     NOME NOT NULL,
    HISTORICO  NOME NOT NULL,
    VALOR      VALOR NOT NULL,
    DEB_CRED   VARCHAR(1)
);

CREATE TABLE FAA_CONTRIBUINTES (
    COD_FAA_CONTRIBUINTES  CODIGO_EXTENSO NOT NULL,
    NOME                   NOME,
    FUNCAO                 NOME,
    VALOR_REMUNERACAO      VALOR,
    VALOR_RECOLHIDO        VALOR,
    COD_FAA                CODIGO_EXTENSO
);

CREATE TABLE FATURAMENTO (
    COD_FATURAMENTO     CODIGO NOT NULL,
    COD_TIPO_COBRANCA   CODIGO,
    COD_USUARIO         CODIGO,
    TABELA_RELACIONADA  NOME,
    DATA_CAD            DATE,
    OBS                 OBSERVACAO,
    HORA_CAD            TIME
);

CREATE TABLE FATURAMENTO_MODELO (
    COD_FATURAMENTO_MODELO  CHAVE_STR NOT NULL,
    DESCRICAO               NOME,
    ATIVO                   BOOLEAN_STR,
    CONFIGURACAO            OBSERVACAO
);

CREATE TABLE FERIADOS (
    CODIGO            CODIGO NOT NULL,
    DESCRICAO         NOME,
    TIPO              NOME,
    FIXO              BOOLEAN_STR,
    FACULTATIVO       BOOLEAN_STR,
    DIFERENCA_PASCOA  INTEGER,
    EXPORATICO        BOOLEAN_STR,
    DIA_MES           VARCHAR(10),
    ANO               SMALLINT
);

CREATE TABLE FERIADOS_CIDADES (
    COD_FERIADOS_CIDADES  CODIGO NOT NULL,
    COD_FERIADO           CODIGO,
    CIDADE_COD_IBGE       CODIGO,
    CIDADE_DESCRICAO      NOME
);

CREATE TABLE FILA (
    COD_FILA                CODIGO NOT NULL,
    COD_TABELA_RELACIONADA  CHAVE_STR,
    TABELA_RELACIONADA      NOME
);

CREATE TABLE FILA_ETAPA (
    COD_FILA_ETAPA  CODIGO NOT NULL,
    DESCRICAO       DIRETORIO,
    AVISAR          BOOLEAN_STR
);

CREATE TABLE FILA_MOVIMENTO (
    COD_FILA_MOVIMENTO  CODIGO NOT NULL,
    COD_FILA            CODIGO,
    DATA                DATE,
    HORA                TIME,
    OBSERVACAO          OBSERVACAO,
    COD_ETAPA           CODIGO,
    COD_USUARIO         CODIGO
);

CREATE TABLE FILIAL (
    COD_FILIAL          CODIGO NOT NULL,
    APELIDO             NOME,
    RAZAO_SOCIAL        NOME,
    RESPONSAVEL         NOME,
    TELEFONE1           TELEFONE,
    TELEFONE2           TELEFONE,
    TELEFONE3           TELEFONE,
    EMAIL               NOME,
    ENDERECO_TIPO       ABREVIATURA,
    NUMERO              DESCRICAO,
    BAIRRO              NOME,
    CEP                 CEP,
    CIDADE              NOME,
    LOGRADOURO          NOME,
    COMPLEMENTO         DESCRICAO,
    CNPJ                CNPJ,
    INSCRICAO           INSCRICAO,
    COD_UF              CODIGO,
    COD_MUNICIPIO_IBGE  CODIGO,
    COD_UF_IBGE         CODIGO
);

CREATE TABLE FORMA_ARRECADACAO (
    COD_FORMA_ARRECADACAO  ABREVIATURA NOT NULL,
    DESCRICAO              DESCRICAO,
    CONVENIO               NOME
);

CREATE TABLE FORMA_TRATAMENTO (
    COD_FORMA_TRATAMENTO  CODIGO NOT NULL,
    EXTENSO               DESCRICAO,
    ABREVIATURA           DESCRICAO
);

CREATE TABLE FORMAPAGAMENTO (
    CODIGO                 CODIGO NOT NULL,
    DESCRICAO              NOME,
    PARCELAS               QUANTIDADE,
    PRAZOMEDIO             QUANTIDADE,
    A_VISTA                BOOLEAN_STR,
    CAIXA_BANCO            BOOLEAN_STR COLLATE WIN_PTBR,
    CONTROLAR_COMO_CHEQUE  BOOLEAN_STR
);

CREATE TABLE FORNECEDOR (
    COD_FORNECEDOR                CHAVE_STR NOT NULL,
    COD_USUARIO                   CODIGO,
    CNPJ                          CHAVE_STR,
    SEQUENCIAL                    INTEGER,
    TIPO_CADASTRO                 BOOLEAN_STR,
    RAZAOSOCIAL                   NOME,
    NOMEFANTASIA                  NOME,
    ENDERECO_ENTREGA_TIPO         ABREVIATURA,
    ENDERECO_ENTREGA_NUMERO       DESCRICAO,
    ENDERECO_ENTREGA_BAIRRO       NOME,
    ENDERECO_ENTREGA_CEP          CEP,
    ENDERECO_ENTREGA_CIDADE       NOME,
    ENDERECO_ENTREGA_LOGRADOURO   NOME,
    ENDERECO_ENTREGA_COMPLEMENTO  DESCRICAO,
    TELEFONE1                     TELEFONE,
    TELEFONE2                     TELEFONE,
    INSCRICAO                     INSCRICAO,
    ABRE                          TIME,
    FECHA                         TIME,
    INICIO_ALMOCO                 TIME,
    FIM_ALMOCO                    TIME,
    MAPA                          ABREVIATURA,
    DATA_CAD                      DATE,
    VENCIMENTO                    INTEGER,
    EMAIL                         NOME,
    FATURAMENTO                   INTEGER,
    ULTIMA_MOVIMENTACAO           DATE,
    COD_STATUS                    CODIGO,
    COD_CNAE                      CNAE,
    ENDERECO_ENTREGA_COD_UF       CODIGO,
    ENDERECO_CIDADE_COD_IBGE      CODIGO,
    ENDERECO_ENTREGA_UF           NOME,
    INICIO_ATIVIDADE              DATE,
    NUMERO_INSS                   NOME
);

CREATE TABLE FRASES (
    COD_FRASE  CODIGO NOT NULL,
    DESCRICAO  OBSERVACAO
);

CREATE TABLE GPS (
    COD_GPS                   CODIGO NOT NULL,
    EMPRESA                   CNPJ,
    DATA_CADASTRO             DATE,
    COD_USUARIO               CODIGO,
    COMPETENCIA               INTEGER,
    COMPETENCIA_COMPLEMENTAR  INTEGER,
    VALOR                     VALOR,
    OUTRAS_ENTIDADES          VALOR,
    MULTA_JUROS               VALOR,
    TOTAL                     VALOR,
    COD_PAGAMENTO             CHAVE_STR,
    OBSERVACAO                OBSERVACAO
);

CREATE TABLE GRCSU (
    VENCIMENTO                    DATE,
    EXERCICIO                     INTEGER,
    EMPRESA_NOME                  NOME,
    EMPRESA_CNPJ                  CNPJ,
    EMPRESA_ENDERECO              NOME,
    EMPRESA_ENDERECO_NUMERO       NOME,
    EMPRESA_ENDERECO_COMPLEMENTO  NOME,
    EMPRESA_ENDERECO_CEP          CEP,
    EMPRESA_ENDERECO_BAIRRO       NOME,
    EMPRESA_ENDERECO_CIDADE       NOME,
    EMPRESA_ENDERECO_UF           UF,
    EMPRESA_CNAE                  CNAE,
    TOTAL_EMPREGADOS              QUANTIDADE,
    NUMERO_GUIA                   VARCHAR(15),
    DATA_EMISSAO                  DATE,
    CODIGO_BARRAS                 CODIGO_BARRAS,
    LINHA_DIGITAVEL               LINHA_DIGITAVEL
);

CREATE TABLE GRUPO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME,
    TIPO       NOME
);

CREATE TABLE GRUPO_CUSTO (
    COD_GRUPO_CUSTO  CODIGO NOT NULL,
    DESCRICAO        NOME,
    COD_CONTA        VARCHAR(10),
    DEBITO_CREDITO   BOOLEAN_STR
);

CREATE TABLE GRUPO_ESPECIALIDADES (
    COD_GRUPO  CODIGO NOT NULL,
    DESCRICAO  DESCRICAO,
    ORDEM      CODIGO
);

CREATE TABLE GRUPO_ESPECIALIDADES_DETALHE (
    COD_GRUPO_DETALHE         CODIGO NOT NULL,
    COD_GRUPO                 CODIGO,
    COD_ESPECIALIDADE_MEDICA  CODIGO
);

CREATE TABLE GRUPO_PROCESSO (
    COD_GRUPO_PROCESSO  CODIGO NOT NULL,
    DESCRICAO           NOME
);

CREATE TABLE GUIAS_DA_WEB (
    CODIGO                 CODIGO_EXTENSO NOT NULL,
    COD_REMESSA_BANCO      CODIGO,
    CODIGO_GUIA_NA_WEB     CODIGO,
    COD_CONVENIO_COBRANCA  CODIGO,
    CNPJ                   CNPJ,
    NOSSO_NUMERO           NOSSO_NUMERO,
    SEU_NUMERO             SEU_NUMERO,
    VALOR                  VALOR,
    DATA_VENCIMENTO        DATE,
    DATA_GERACAO           DATE,
    COMPETENCIA            INTEGER,
    COMPLEMENTAR           SMALLINT,
    TIPO                   NOME,
    COD_TIPO_COBRANCA      INTEGER,
    COD_BARRA              COD_BARRA,
    WS_DATA                TIMESTAMP,
    WS_DESCRICAO_RETORNO   NOME,
    WS_COD_RETORNO         ABREVIATURA,
    WS_AUTENTICACAO        NOME,
    RESGITRADO             BOOLEAN_STR,
    OBSERVACAO             OBSERVACAO
);

CREATE TABLE GUIAS_EM_BRANCO (
    TIPO             NOME,
    NUM_GUIA         CODIGO_EXTENSO,
    USUARIO          CODIGO,
    COMPETENCIA      INTEGER,
    DATA_LANCAMENTO  DATE,
    HORA_LANCAMENTO  TIME,
    VENCIMENTO       DATE
);

CREATE TABLE GUIAS_FORMA_GERAR (
    COD_GUIAS_FORMA_GERAR  CODIGO NOT NULL,
    DESCRICAO              NOME,
    CONTROLE               ABREVIATURA
);

CREATE TABLE HISTORICO_ACESSOS (
    COD_PESSOA        CODIGO NOT NULL,
    NOME              NOME,
    DATA              DATE,
    HORA              TIME,
    NUM_CARTEIRA      VARCHAR(20),
    MOTIVO_DESCRICAO  NOME,
    CODIGO            CODIGO NOT NULL
);

CREATE TABLE HISTORICO_ASSOCIADO_EMPRESA (
    CODIGO           CODIGO NOT NULL,
    ASSOCIADO        CODIGO,
    USUARIO          CODIGO,
    COD_HOMOLOGACAO  CODIGO,
    CNPJ             CNPJ,
    EMPRESA          NOME,
    DATA_LANCAMENTO  DATE,
    DATA_ADMISSAO    DATE,
    DATA_DEMISSAO    DATE,
    DESCRICAO        NOME,
    FUNCAO           NOME
);

CREATE TABLE HOMOLOGACAO (
    CODIGO                INTEGER NOT NULL,
    DATA_CADASTRO         DATE,
    CTPS                  CTPS,
    VALOR                 VALOR,
    EMPRESA               CNPJ,
    ASSOCIADO             CODIGO,
    USUARIO               CODIGO,
    SEXO                  BOOLEAN_STR,
    DATA_ADMISSAO         DATE,
    DATA_DEMISSAO         DATE,
    OBSERVACAO            OBSERVACAO,
    FUNCIONARIO           NOME,
    TIPO_AFASTAMENTO      CODIGO,
    DATA_AVISO            DATE,
    DATA_HOMOLOGACAO      DATE,
    DATA_NASCIMENTO       DATE,
    VALOR_SALARIO         VALOR,
    CTPS_SERIE_UF         UF,
    CTPS_SERIE            CTPS_SERIE,
    COMPLEMENTAR          BOOLEAN_STR,
    ENDERECO_LOGRADOURO   NOME,
    ENDERECO_NUMERO       NOME,
    ENDERECO_COMPLEMENTO  NOME,
    ENDERECO_CIDADE       NOME,
    ENDERECO_UF           UF,
    ENDERECO_BAIRRO       NOME,
    ENDERECO_CEP          CEP,
    TOTAL_BRUTO           VALOR,
    TOTAL_DESCONTOS       VALOR,
    EMAIL                 NOME,
    FUNCAO                NOME,
    PIS                   PIS,
    COD_FILIAL            CODIGO,
    RESSALVA              OBSERVACAO COLLATE WIN_PTBR,
    CPF                   CPF
);

CREATE TABLE HOMOLOGACAO_WEB (
    COD_HOMOLOGACAO_WEB  CODIGO NOT NULL,
    DESCRICAO            NOME,
    ATIVO                BOOLEAN_STR
);

CREATE TABLE HOMOLOGACAO_WEB_HORARIO (
    COD_HOMOLOGACAO_WEB_HORARIO  INTEGER NOT NULL,
    COD_HOMOLOGACAO_WEB          CODIGO,
    DIA                          NOME,
    HORARIO                      TIME,
    QUANTIDADE                   SMALLINT,
    ORDENACAO                    SMALLINT
);

CREATE TABLE HOMOLOGADOR (
    COD_HOMOLOGADOR  CODIGO NOT NULL,
    COD_STATUS       CODIGO,
    COD_USUARIO      CODIGO
);

CREATE TABLE HORARIO_AGENDAMENTO_SERVICO (
    CODIGO                      CODIGO NOT NULL,
    CODIGO_AGENDAMENTO_SERVICO  CODIGO,
    HORA                        TIME,
    DATA                        DATE,
    NAO_CONCLUIDO               BOOLEAN_STR
);

CREATE TABLE HORARIO_MARCACAO (
    CODIGO      CODIGO,
    HORARIO     TIME,
    PERIODO     BOOLEAN_STR,
    COD_FILIAL  CODIGO
);

CREATE TABLE HORARIOS_CONFIG_AGEND_SERVICO (
    CODIGO                  CODIGO NOT NULL,
    COD_CONFIG_AGENDAMENTO  CODIGO,
    DIA_SEMANA              NOME,
    HORA                    TIME
);

CREATE TABLE IBE$SCRIPTS (
    IBE$SCRIPT_NAME           VARCHAR(64) CHARACTER SET UNICODE_FSS NOT NULL,
    IBE$SCRIPT_TYPE           VARCHAR(15) CHARACTER SET UNICODE_FSS NOT NULL,
    IBE$SCRIPT_SOURCE         BLOB SUB_TYPE 1 SEGMENT SIZE 1024,
    IBE$SCRIPT_BLR            BLOB SUB_TYPE 0 SEGMENT SIZE 1024,
    IBE$SCRIPT_DESCRIPTION    BLOB SUB_TYPE 1 SEGMENT SIZE 1024,
    IBE$SCRIPT_STATE          VARCHAR(15) CHARACTER SET UNICODE_FSS DEFAULT 'INVALID' NOT NULL,
    IBE$SCRIPT_ACTION_ID      INTEGER,
    IBE$SCRIPT_FORM           BLOB SUB_TYPE 0 SEGMENT SIZE 1024,
    IBE$SCRIPT_PARAM_HISTORY  BLOB SUB_TYPE 0 SEGMENT SIZE 1024,
    IBE$SCRIPT_ADD_DATA       BLOB SUB_TYPE 1 SEGMENT SIZE 1024
);

CREATE TABLE IMPORTACAO_DADOS (
    COD_IMPORTACAO_DADOS  CODIGO NOT NULL,
    DATA_IMPORTACAO       DATE,
    DESCRICAO             NOME,
    TABELA                NOME,
    FILTRO                NOME
);

CREATE TABLE IMPRESSORAS (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME,
    TIPO       NOME,
    SERIAL     NOME,
    NOME       NOME,
    PORTA      NOME
);

CREATE TABLE ITEMS_RESCISAO (
    CODIGO            CODIGO NOT NULL,
    DESCRICAO         NOME,
    TIPO              BOOLEAN_STR,
    VINCULO           CODIGO,
    INSS              BOOLEAN_STR,
    VALOR_PERCENTUAL  VALOR,
    TIPO_ENTRADA      BOOLEAN_STR,
    BASEADO           BOOLEAN_STR,
    MASCARA           NOME,
    IRRF              BOOLEAN_STR,
    IRRF_VINCULO      CODIGO
);

CREATE TABLE ITENS_CHECK_LIST (
    CODIGO      CODIGO NOT NULL,
    DESCRICAO   OBSERVACAO,
    COMENTARIO  OBSERVACAO,
    ORDEM       SMALLINT
);

CREATE TABLE ITENS_CHECK_LIST_HOMOLOGACAO (
    CODIGO                      CODIGO NOT NULL,
    COD_CHECK_LIST_HOMOLOGACAO  CODIGO,
    DESCRICAO                   NOME,
    COMENTARIO                  OBSERVACAO,
    PENDENTE                    BOOLEAN_STR,
    VERIFICADO                  BOOLEAN_STR,
    ORDEM                       SMALLINT
);

CREATE TABLE ITENS_CONTAS (
    CODIGO     CODIGO NOT NULL,
    CONTA      CODIGO,
    CONVENIO   CODIGO,
    VALOR      VALOR,
    DESCRICAO  NOME,
    SEQUENCIA  CODIGO
);

CREATE TABLE ITENS_EXAME (
    CODIGO     CODIGO NOT NULL,
    COD_EXAME  CODIGO,
    DESCRICAO  NOME,
    VALOR      VALOR,
    EXPORTADO  BOOLEAN_STR COLLATE WIN_PTBR
);

CREATE TABLE ITENS_SERVICO (
    CODIGO                     CODIGO NOT NULL,
    CODIGO_LANCAMENTO_SERVICO  CODIGO,
    DESCRICAO                  NOME,
    VALOR                      VALOR,
    QTE                        INTEGER,
    LOCAL_PAGAMENTO            NOME
);

CREATE TABLE ITENS_SERVICO_GENERICO (
    CODIGO                           CODIGO NOT NULL,
    CODIGO_LANCAMENTO_SERV_GENERICO  CODIGO,
    DESCRICAO                        NOME,
    VALOR                            VALOR,
    QTE                              INTEGER
);

CREATE TABLE JUSTIFICATIVA_MUDANCA_STATUS (
    COD_JUSTIFICATIVA_MUDANCA  CODIGO NOT NULL,
    DESCRICAO                  NOME
);

CREATE TABLE LANCAMENTOS_SERVICOS (
    CODIGO                     CODIGO NOT NULL,
    COD_CONVENIO_TIPO_SERVICO  CODIGO,
    COD_ASSOCIADO              CODIGO,
    COD_USUARIO                CODIGO,
    DATA_LANCAMENTO            DATE,
    NOME_BENEFICIARIO          NOME,
    VALIDADE                   DATE,
    GRATIS                     BOOLEAN_STR,
    PARENTESCO                 NOME,
    OBS                        OBSERVACAO,
    USUARIO_LIBERACAO          CODIGO,
    FLAG                       NOME,
    OBS2                       OBSERVACAO,
    COD_ESPECIALIDADE_MEDICA   CODIGO
);

CREATE TABLE LANCAMENTOS_SERVICOS_GENERICO (
    CODIGO                     CODIGO NOT NULL,
    COD_CONVENIO_TIPO_SERVICO  CODIGO,
    COD_COMERCIARIO            CODIGO,
    COD_USUARIO                CODIGO,
    DATA_LANCAMENTO            DATE,
    NOME_BENEFICIARIO          NOME,
    VALIDADE                   DATE,
    GRATIS                     BOOLEAN_STR,
    PARENTESCO                 NOME,
    OBS                        OBSERVACAO,
    USUARIO_LIBERACAO          CODIGO,
    FLAG                       NOME,
    NOME                       NOME,
    CPF                        CPF,
    DATA_NASC                  DATE,
    OBS2                       OBSERVACAO,
    COD_ESPECIALIDADE_MEDICA   CODIGO
);

CREATE TABLE LICENCA (
    COD_LICENCA             CODIGO NOT NULL,
    OBS                     OBSERVACAO,
    MENSAGEM_PARA_CLIENTE   OBSERVACAO,
    NUMERO_DE_SERIE         NOME,
    VALIDADE                NOME,
    ULTIMA_CONSULTA_ONLINE  NOME,
    SIMULAR_MSG_DE_ERRO     NOME,
    VERSAO_DEMO             NOME,
    ATIVA                   NOME,
    CNPJ                    NOME,
    NAO_VALIDAR_LICENCA     NOME
);

CREATE TABLE LOCAL_EMISSAO_GUIAS (
    COD_LOCAL_EMISSAO  CODIGO NOT NULL,
    DESCRICAO_LOCAL    NOME
);

CREATE TABLE LOCAL_PAGAMENTO (
    COD_LOCAL_PAGAMENTO  CODIGO NOT NULL,
    DESCRICAO_LOCAL      NOME
);

CREATE TABLE LOG_ERROS (
    COD_LOG_ERRO             CODIGO NOT NULL,
    COD_FILIAL               CODIGO,
    COMPONENTE_EM_FOCO       NOME,
    FORMULARIO               NOME,
    USUARIO                  NOME,
    COMPUTADOR               NOME,
    DATA                     DATE,
    HORA                     TIME,
    STATUS_TABELA_PRINCIPAL  NOME,
    LINHA_ERRO               NOME COLLATE WIN_PTBR,
    MENSAGEM_ERRO            OBSERVACAO
);

CREATE TABLE MARCAR_HOMOLOGACAO (
    CODIGO                         CODIGO NOT NULL,
    EMPRESA                        CNPJ,
    USUARIO                        CODIGO,
    CONTABILIDADE                  CNPJ,
    COD_FILIAL                     CODIGO,
    TIPO_AFASTAMENTO               CODIGO,
    COD_HOMOLOGADOR                CODIGO,
    DATA_CADASTRO                  DATE,
    HORA_CADASTRO                  TIME,
    DATA_MARCADA                   DATE,
    PERIODO                        BOOLEAN_STR,
    HORA_MARCADA                   TIME,
    SOLICITANTE                    NOME,
    FUNCIONARIO                    NOME,
    OBSERVACAO                     OBSERVACAO,
    COD_STATUS_MARCAR_HOMOLOGACAO  CODIGO,
    TRABALHADOR_FUNCAO             NOME,
    TIPO_SOLICITANTE               NOME,
    DATA_AVISO                     DATE,
    DATA_AFASTAMENTO               DATE
);

CREATE TABLE MARCAR_HOMOLOGACAO_HORARIO (
    CODIGO                  CODIGO NOT NULL,
    COD_FILIAL              CODIGO,
    COD_MARCAR_HOMOLOGACAO  CODIGO,
    COD_USUARIO_CAD         CODIGO,
    DATA_HORA_CAD           TIMESTAMP,
    DATA                    DATE,
    HORA                    TIME,
    CADASTRO_MANUAL         BOOLEAN_STR,
    PERIODO                 VARCHAR(1)
);

CREATE TABLE MENSAGEM_NA_REDE (
    CODIGO    CODIGO NOT NULL,
    MENSAGEM  OBSERVACAO,
    DATA      DATE,
    HORA      TIME,
    USUARIO   NOME,
    ENVIADA   BOOLEAN_STR
);

CREATE TABLE MENSALIDADE (
    CODIGO         CODIGO NOT NULL,
    DESCRICAO      NOME,
    VALOR          VALOR,
    DATA           DATE,
    TIPOASSOCIADO  CODIGO
);

CREATE TABLE MENU_RELATORIO_SISTEMA (
    COD_MENU_RELATORIO_SISTEMA  CODIGO NOT NULL,
    DESCRICAO                   NOME,
    COD_RELATORIO               CODIGO,
    ORDEM                       INTEGER,
    NOME                        NOME
);

CREATE TABLE MODELO_DECLARACAO (
    COD_MODELO_DECLARACAO         CODIGO NOT NULL,
    DESCRICAO                     DESCRICAO,
    ARQUIVO_EXTERNO               DIRETORIO,
    APARECE_NA_EMPRESA            BOOLEAN_STR,
    APARECE_NO_ASSOCIADO          BOOLEAN_STR,
    APARECE_NA_ENTIDADE_SINDICAL  BOOLEAN_STR
);

CREATE TABLE MOTIVO_DEVOLUCAO (
    COD_MOTIVO                 CODIGO NOT NULL,
    COD_NOVO_STATUS            CODIGO,
    COD_JUSTIFICATIVA_MUDANCA  CODIGO,
    DESCRICAO                  DESCRICAO,
    TABELA_RELACAO             NOME
);

CREATE TABLE MOVIMENTACAO_CHEQUE (
    CODIGO                        INTEGER NOT NULL,
    DATA                          DATE,
    TIPO_MOVIMENTO                CODIGO,
    USUARIO                       CODIGO,
    CHEQUE                        CODIGO_EXTENSO,
    OBSERVACAO                    OBSERVACAO,
    COD_CONTA_BANCARIA_MOVIMENTO  VARCHAR(10)
);

CREATE TABLE MOVIMENTO_CAIXA (
    COD_MOVIMENTO_CAIXA       CODIGO_EXTENSO NOT NULL,
    COD_CONTA_BANCARIA        VARCHAR(10),
    COD_PLANO_CONTA           CODIGO,
    COD_USUARIO_LANCAMENTO    CODIGO,
    DATA_CAD                  DATE,
    HORA_CAD                  TIME,
    OBS                       OBSERVACAO,
    ENTRADA_SAIDA             VARCHAR(10),
    COD_FILIAL                CODIGO,
    COD_CENTRO_CUSTO          CODIGO,
    COD_ESTORNO               CODIGO,
    COD_FECHAMENTO            CODIGO,
    DATA_MOVIMENTACAO         DATE,
    VALOR_MOVIMENTO           VALOR,
    MULTA                     VALOR,
    JUROS                     VALOR,
    DESCONTO                  VALOR,
    DESCRICAO                 NOME,
    COD_FORNECEDOR            CHAVE_STR,
    TABELA_RELACIONADA        NOME,
    COD_TABELA_RELACIONADA    NOME,
    DATA_MOVIMENTO_EFETUADO   DATE,
    VALOR_MOVIMENTO_EFETUADO  VALOR
);

CREATE TABLE MOVIMENTO_CAIXA_GRUPO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE OFICIOS (
    COD_OFICIO      CODIGO NOT NULL,
    COD_USUARIO     CODIGO,
    DESCRICAO       NOME,
    DATA_CAD        DATE,
    HORA_CAD        TIME,
    DATA_ENVIO      DATE,
    HORA_ENVIO      TIME,
    OBS             OBSERVACAO,
    ARQUIVO         DIRETORIO COLLATE WIN_PTBR,
    NUMERO_INICIAL  INTEGER
);

CREATE TABLE OFICIOS_DETALHE (
    COD_OFICIO_DETALHE     CODIGO NOT NULL,
    COD_OFICIO             CODIGO,
    COD_ENTIDADE_SINDICAL  CODIGO,
    COD_INTEGRANTE         CODIGO
);

CREATE TABLE OPOSICAO (
    CODIGO         CODIGO NOT NULL,
    VIGENCIA       INTEGER,
    NOME           NOME,
    CPF            CPF,
    DATA           DATE,
    EMPRESA        CNPJ,
    CTPS           CTPS,
    CTPS_SERIE     CTPS_SERIE,
    UF_SERIE       UF,
    PIS            PIS,
    COD_USUARIO    CODIGO,
    COD_FILIAL     CODIGO,
    RG             RG,
    DATA_CADASTRO  DATE,
    TELEFONE       TELEFONE,
    EMAIL          DESCRICAO
);

CREATE TABLE OPOSICAO_ASSOCIATIVA (
    CODIGO       CODIGO NOT NULL,
    COD_USUARIO  CODIGO,
    COD_FILIAL   CODIGO,
    VIGENCIA     INTEGER,
    NOME         NOME,
    CPF          CPF,
    DATA         DATE,
    EMPRESA      CNPJ,
    CTPS         CTPS,
    CTPS_SERIE   CTPS_SERIE,
    UF_SERIE     UF,
    PIS          PIS,
    TELEFONE     TELEFONE,
    EMAIL        DESCRICAO
);

CREATE TABLE PADRAO_BANCARIO (
    COD_PADRAO_BANCARIO  CODIGO NOT NULL,
    DESCRICAO            NOME,
    OBS                  OBSERVACAO
);

CREATE TABLE PAGAMENTO_SERVICO (
    CODIGO                  CODIGO NOT NULL,
    COD_LANCAMENTO_SERVICO  CODIGO,
    COD_USUARIO_LANCAMENTO  CODIGO,
    COD_USUARIO_BAIXA       CODIGO,
    COD_FORMA_PAGAMENTO     CODIGO,
    DATA_VENCIMENTO         DATE,
    VALOR                   VALOR,
    DATA_BAIXA              DATE,
    VALOR_BAIXA             VALOR,
    MULTA                   VALOR,
    JUROS                   VALOR,
    OUTROS                  VALOR,
    DATA_LANCAMENTO         DATE,
    MOVIMENTO_CAIXA         CODIGO_EXTENSO,
    DESCONTO                VALOR
);

CREATE TABLE PAGAMENTO_SERVICO_GENERICO (
    CODIGO                           CODIGO NOT NULL,
    CODIGO_LANCAMENTO_SERV_GENERICO  CODIGO,
    COD_USUARIO_LANCAMENTO           CODIGO,
    COD_USUARIO_BAIXA                CODIGO,
    COD_FORMA_PAGAMENTO              CODIGO,
    DATA_VENCIMENTO                  DATE,
    VALOR                            VALOR,
    DATA_BAIXA                       DATE,
    VALOR_BAIXA                      VALOR,
    MULTA                            VALOR,
    JUROS                            VALOR,
    OUTROS                           VALOR,
    DATA_LANCAMENTO                  DATE,
    MOVIMENTO_CAIXA                  CODIGO_EXTENSO,
    DESCONTO                         VALOR
);

CREATE TABLE PARAMETRO (
    NOME_IMPRESSORA_CONVITE          NOME,
    PORTA_IMPRESSORA_CONVITE         NOME,
    PORTA_IMPRESSORA_RECIBO          NOME,
    NOME_IMPRESSORA_RECIBO           NOME,
    RETORNO_APLICACAO                NOME,
    NUMERO_CONFEDERATIVA             CODIGO_EXTENSO,
    LOCAL_FOTOS                      NOME,
    CEP_FIXO                         BOOLEAN_STR,
    JUROS                            VALOR,
    MULTA                            VALOR,
    GUIAS_VISUALIZACAO               BOOLEAN_STR,
    NOME_IMPRESSORA_GUIAS            NOME,
    PORTA_IMPRESSORA_GUIAS           NOME,
    GUIAS_SELECAO_IMPRESSORA         BOOLEAN_STR,
    RETORNO_SICAP                    NOME,
    RETORNO_SITCS                    NOME,
    PORTA_COMUNICACAO_CATRACA        INTEGER,
    VELOCIDADE_COMUNICACAO_CATRACA   INTEGER,
    VENCIMENTO_ASSOCIATIVA           CODIGO,
    VENCIMENTO_CONFEDERATIVA         INTEGER,
    NUMERO_ASSOCIATIVA               CODIGO_EXTENSO,
    NOME_IMPRESSORA_BLOQUETO         NOME,
    PORTA_IMPRESSORA_BLOQUETO        NOME,
    EXAMES                           BOOLEAN_STR,
    ASSOCIATIVA_ORDENACAO            BOOLEAN_STR,
    ASSOCIATIVA_RECIB_ASSOCIADOS     BOOLEAN_STR,
    FILTRO_INICIAL_CONFEDERATIVA     NOME,
    OBS_RECISAO                      OBSERVACAO,
    VALIDADE_CONVITE                 INTEGER,
    FTP_RETORNOS_USERNAME            NOME,
    FTP_RETORNOS_HOST                NOME,
    FTP_RETORNOS_PASSWORD            NOME,
    FTP_DADOS_PORTAL_USERNAME        NOME,
    FTP_DADOS_PORTAL_HOST            NOME,
    FTP_DADOS_PORTAL_PASSWORD        NOME,
    PAGINA_WEB_DADOS_PORTAL          NOME,
    RETORNO_APLICACAO_PARAMETROS     NOME,
    CONTROLE_DEMITIDOS               BOOLEAN_STR,
    GUIA_APENAS_HOMOLOGAR            BOOLEAN_STR DEFAULT 'F',
    IMPRESSAO_BASEADA_MODELO         BOOLEAN_STR,
    CHEQUE_ASSINADO_POR              NOME,
    CHEQUE_COM_CANHOTO               BOOLEAN_STR DEFAULT 'F',
    CHEQUE_OPCAO_ASSINATURA          BOOLEAN_STR DEFAULT 'F',
    CHEQUE_VISADO_CRUZADO            BOOLEAN_STR DEFAULT 'F',
    GIROS_SORTEIO                    SMALLINT,
    EXIGIR_CPF_DA_CATEGORIA          BOOLEAN_STR DEFAULT 'T',
    WEB_NOVIDADES                    OBSERVACAO COLLATE WIN_PTBR,
    PARAMETRO_ORIGEM_PLANO_BASICO    NOME,
    FTP_SCRIPT                       DIRETORIO,
    MENU_PRINCIPAL_INVISIVEL         BOOLEAN_STR,
    CAMINHO_BACKUP_MANUAL            DIRETORIO,
    DATA_ULTIMO_BKP                  DATE,
    MARGEM_ESQUERDA_RECIBO           INTEGER,
    USA_NOVO_PROCCESSAMENTO_RETORNO  BOOLEAN_STR COLLATE WIN_PTBR,
    TIPO_ESTORNO_RECEBIMENTO         NOME,
    ESTORNO_STATUS_CONCLUIDO         BOOLEAN_STR,
    AVISA_BKP                        BOOLEAN_STR,
    VERIFICA_VERSAO_BD               BOOLEAN_STR,
    AVISA_FALTA_EXTRADO              BOOLEAN_STR,
    MARGEM_ESQUERDA_TELA_CHAMADA     INTEGER,
    PORTA_TELA_CHAMADA               INTEGER,
    IP_TELA_CHAMADA                  NOME,
    VIDEO_TELA_CHAMADA               DESCRICAO,
    IMAGEM_TELA_CHAMADA              DESCRICAO,
    SOM_TELA_CHAMADA                 DESCRICAO,
    TEXTO_ASSEMBLEIA                 OBSERVACAO,
    LOCAL_NOVIDADES_VERSAO           DIRETORIO,
    URL_SUPORTE_REMOTO               DIRETORIO,
    OBS_CONVITE                      OBSERVACAO,
    TEXTO_VOTACAO                    OBSERVACAO,
    EXIGIR_SENHA_DESCONTO            BOOLEAN_STR,
    IMPORTA_GUIAS_WEB_MYSQL          BOOLEAN_STR,
    ATUALIZACAO_HOST                 VARCHAR(40),
    ATUALIZACAO_USER                 VARCHAR(40),
    ATUALIZACAO_PASS                 VARCHAR(40),
    ATUALIZACAO_BD                   VARCHAR(40),
    COD_IMPRESSORA_CONVITE           CODIGO,
    IMPRESSAO_CONVITE_VISUALIZAR     BOOLEAN_STR DEFAULT 'F',
    IMPRESSAO_CONVITE_OP_IMPRESSAO   BOOLEAN_STR DEFAULT 'F',
    COD_IMPRESSORA_RECIBO            CODIGO,
    IMPRESSAO_RECIBO_VISUALIZAR      BOOLEAN_STR DEFAULT 'F',
    IMPRESSAO_RECIBO_OP_IMPRESSAO    BOOLEAN_STR DEFAULT 'F',
    COD_IMPRESSORA_GUIAS             CODIGO,
    IMPRESSAO_GUIAS_VISUALIZAR       BOOLEAN_STR DEFAULT 'F',
    IMPRESSAO_GUIAS_OP_IMPRESSAO     BOOLEAN_STR DEFAULT 'F',
    ULTIMA_VERIFICACAO_WEB           DATE,
    CNAE_PADRAO                      CNAE,
    TEMPO_CHAMADAS_WEB_BROWSER       INTEGER,
    LOCAL_ARQUIVOS_DISTRIBUIR_SICAP  DIRETORIO,
    LOCAL_ARQUIVOS_DISTRIBUIR_SITCS  DIRETORIO,
    GERAR_REMESSA_AUTOMATICAMENTE    BOOLEAN_STR,
    LOCAL_ARQUIVOS_DISTRIBUIR_SIGCB  DIRETORIO,
    TOKEN_CONSULTA_RECEITA           DESCRICAO,
    DIAS_CONSULTA_RECEITA_WS         SMALLINT,
    CODIGO                           CODIGO NOT NULL,
    FILTRO_INICIAL_BAIXA_CONTA       CODIGO,
    TIMEOUT_CONSULTA_RECEITA         INTEGER,
    WS_REGISTRADOR_DATA              TIMESTAMP,
    COD_TIPO_COB_AGRUP_COBRANCA      CODIGO,
    COD_TIPO_COBRANCA_ACORDO         CODIGO,
    WS_REGISTRADOR_HOST              DESCRICAO,
    WS_REGISTRADOR_PORT              INTEGER,
    WS_TIMEOUT                       INTEGER,
    WS_TEMPO_REGISTRAR               INTEGER,
    CONSULTA_RECEITA_LOCAL           NOME,
    COD_IMPRESSORA_RECIBO_AV         CODIGO,
    IMPRESSAO_RECIBO_AV_VISUALIZAR   BOOLEAN_STR,
    IMPRESSAO_RECIBO_AV_OP_IMPRESSA  BOOLEAN_STR,
    IMPRESSAO_RECIBO_AV              NOME
);

CREATE TABLE PARAMETRO_RELATORIO (
    INTEIRO_1  INTEGER,
    INTEIRO_2  INTEGER,
    INTEIRO_3  INTEGER,
    INTEIRO_4  INTEGER,
    STRING_1   VARCHAR(5000),
    STRING_2   VARCHAR(5000),
    STRING_3   VARCHAR(5000),
    STRING_4   VARCHAR(5000),
    DATA_1     DATE,
    DATA_2     DATE,
    DATA_3     DATE,
    DATA_4     DATE,
    TIME_1     INTEGER,
    TIME_2     INTEGER,
    TIME_3     INTEGER,
    TIME_4     INTEGER
);

CREATE TABLE PARENTESCO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME,
    LIMITE     NUMERO
);

CREATE TABLE PEDIDOS_PROCESSO (
    COD_PEDIDO_PROCESSO  CODIGO NOT NULL,
    NUM_PROCESSO         NOME,
    DESCRICAO            NOME,
    DATA_CAD             DATE,
    OBS                  OBSERVACAO,
    DATA_PEDIDO          DATE
);

CREATE TABLE PERIODICIDADE (
    CODIGO     INTEGER NOT NULL,
    DESCRICAO  NOME,
    VALOR      INTEGER,
    TIPO       NOME
);

CREATE TABLE PLANO_BASICO (
    CODIGO               CODIGO_EXTENSO NOT NULL,
    EMPRESA              CNPJ,
    DATA_EMISSAO         DATE,
    DATA_VENCIMENTO      DATE,
    DATA_BAIXA           DATE,
    COMPETENCIA          INTEGER,
    COMPLEMENTAR         INTEGER,
    VALOR                VALOR,
    MULTA_JUROS          VALOR,
    VALOR_BAIXA          VALOR,
    USUARIO_EMISSAO      CODIGO,
    USUARIO_BAIXA        CODIGO,
    REFERENCIA           DATE,
    AGRUPADA             CODIGO_EXTENSO,
    OBS_BAIXA            OBSERVACAO,
    TARIFA               VALOR,
    FORMA_BAIXA          NOME,
    COD_FORMA_PAGAMENTO  CODIGO,
    MOVIMENTO_CAIXA      CODIGO_EXTENSO,
    EM_COBRANCA          BOOLEAN_STR,
    COD_PROC_DETALHE     CODIGO
);

CREATE TABLE PLANO_CONTA (
    COD_PLANO_CONTA    CODIGO NOT NULL,
    COD_PAI            CODIGO,
    DESCRICAO          NOME,
    ENTRADA_SAIDA      BOOLEAN_STR,
    CODIGO_DESCRITIVO  NOME
);

CREATE TABLE PRE_CADASTRO (
    COD_PRE_CADASTRO      CODIGO NOT NULL,
    COD_USUARIO_CAD       CODIGO,
    COD_USAURIO_CONSULTA  CODIGO,
    DATA_CAD              DATE,
    CNPJ                  CNPJ,
    TIPO                  NOME,
    LOCAL_CONSULTA        NOME,
    DATA_CONSULTA         DATE,
    STATUS                VARCHAR(10) COLLATE WIN_PTBR,
    RAZAO_SOCIAL          DESCRICAO
);

CREATE TABLE PRE_CADASTRO_HISTORICO (
    COD_PRE_CADASTRO_HISTORICO  CODIGO NOT NULL,
    DESCRICAO                   OBSERVACAO,
    DATA_INICIO                 DATE,
    DATA_FIM                    DATE,
    REGISTROS_EXISTENTES        QUANTIDADE,
    REGISTROS_INEXISTENTES      QUANTIDADE,
    REGISTROS_TOTAL             INTEGER,
    COD_GRUPO                   CODIGO,
    OBSERVACAO_NO_REGISTRO      OBSERVACAO,
    TABELA_RELACIONADA          NOME,
    OBSERVACAO                  OBSERVACAO
);

CREATE TABLE PROCESSAMENTO (
    CODIGO                 CODIGO NOT NULL,
    DATA                   DATE,
    HORA                   TIME,
    USUARIO                CODIGO,
    CONVENIO               NOME,
    LIDAS                  QUANTIDADE,
    BAIXADAS               QUANTIDADE,
    INEXISTENTES           QUANTIDADE,
    ARQUIVO                NOME,
    NSA                    INTEGER,
    VERSAO_LAYOUT          INTEGER,
    HASH_CODE_ARQ_RETORNO  NOME,
    COD_CONVENIO_COBRANCA  CODIGO,
    CEDENTE                ABREVIATURA
);

CREATE TABLE PROCESSAMENTO_DETALHES (
    COD_PROC_DETALHE            CODIGO NOT NULL,
    COD_PROCESSAMENTO           CODIGO,
    FORMA_ARRECADACAO           ABREVIATURA,
    TIPO_PAGAMENTO              CODIGO,
    HASH_CODE                   NOME,
    COD_CONVENIO_COBRANCA       CODIGO,
    CONVENIO                    NOME,
    COD_MOVIMENTACAO            DESCRICAO,
    NUMERO_GUIA                 NOME,
    DIRETA_INDIRETA             ABREVIATURA,
    DATA_OCORRENCIA             DATE,
    DATA_PAGAMENTO              DATE,
    DATA_VENCIMENTO             DATE,
    DATA_CREDITO                DATE,
    VALOR_MULTA_JUROS           VALOR,
    VALOR_CREDITO               VALOR,
    VALOR_TARIFA                VALOR,
    VALOR_DOCUMENTO             VALOR,
    VALOR_PAGAMENTO             VALOR,
    VALOR_REPASSE_FEDERACAO     VALOR,
    VALOR_REPASSE_CONFEDERACAO  VALOR,
    VALOR_REPASSE_OUTROS        VALOR,
    NOSSO_NUMERO_BANCO          NOSSO_NUMERO,
    BANCO_COBRADOR_RECEBEDOR    ABREVIATURA,
    LINHA                       OBSERVACAO,
    SEGMENTO_LINHA              ABREVIATURA
);

CREATE TABLE PROCESSO_JURIDICO_CONTRATO (
    COD_PROC_JUR_CONTRATO  CODIGO NOT NULL,
    NUM_PROCESSO           NOME,
    SALARIO                VALOR,
    COMISSAO               VALOR,
    OBS_SALARIO            OBSERVACAO,
    ADMISSAO               DATE,
    AVISO                  DATE,
    DEMISSAO               DATE,
    TIPO_AFASTAMENTO       CODIGO,
    FUNCAO                 NOME,
    HORARIO_TRABALHO       OBSERVACAO
);

CREATE TABLE PROCESSO_JURIDICO_RECLAMADO (
    CODIGO                 CODIGO NOT NULL,
    CNPJ                   CNPJ,
    USUARIO                CODIGO,
    RAZAOSOCIAL            NOME,
    NOMEFANTASIA           NOME,
    ENDERECO_TIPOENDERECO  NOME,
    ENDERECO_LOGRADOURO    NOME,
    ENDERECO_NUMERO        NOME,
    ENDERECO_COMPLEMENTO   NOME,
    ENDERECO_BAIRRO        NOME,
    ENDERECO_CIDADE        NOME,
    ENDERECO_UF            UF,
    ENDERECO_CEP           CEP,
    TELEFONE1              TELEFONE,
    TELEFONE2              TELEFONE,
    EMAIL                  NOME,
    CONTATO                NOME,
    JF                     BOOLEAN_STR,
    DATA_CADASTRO          DATE,
    CNAE                   CNAE,
    OBS                    OBSERVACAO,
    SITE                   NOME
);

CREATE TABLE PROCESSOS_JURIDICOS (
    NUM_PROCESSO          NOME NOT NULL,
    COD_CLIENTE_PROCESSO  CODIGO,
    COD_TIPO_PROCESSO     CODIGO,
    COD_GRUPO_PROCESSO    CODIGO,
    COD_COMARCA           CODIGO,
    COD_VARA              CODIGO,
    COD_ADVOGADO          CODIGO,
    DESCRICAO             NOME,
    DATA_CADASTRO         DATE,
    DATA_INICIO_PROCESSO  DATE,
    DATA_ENCERRAMENTO     DATE,
    OBS                   OBSERVACAO,
    COD_RECLAMADO         CODIGO,
    FATOS                 OBSERVACAO
);

CREATE TABLE PROGRAMAS (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME,
    LOCAL      DIRETORIO
);

CREATE TABLE RAIS (
    COD_RAIS                     CODIGO_EXTENSO NOT NULL,
    ANO                          INTEGER,
    TRABALHADOR_NOME             NOME,
    TRABALHADOR_CPF              CPF,
    TRABALHADOR_SEXO             BOOLEAN_STR,
    DATA_AMISSAO                 DATE,
    TRABALHADOR_IDADE            INTEGER,
    TEMPO_EMPREGO                NUMERIC(5,1),
    EMPRESA                      CNPJ,
    CBO                          ABREVIATURA,
    SALARIO                      VALOR,
    CONTRIBUICAO_SINDICAL_CNPJ   CNPJ,
    CONTRIBUICAO_SINDICAL_VALOR  VALOR,
    CONTRIBUICAO_ASSIST_CNPJ     CNPJ,
    CONTRIBUICAO_ASSIST_VALOR    VALOR,
    CONTRIBUICAO_CONF_CNPJ       CNPJ,
    CONTRIBUICAO_CONF_VALOR      VALOR
);

CREATE TABLE RB_FIELD (
    TABLE_NAME   VARCHAR(60) NOT NULL,
    FIELD_NAME   VARCHAR(60) NOT NULL,
    FIELD_ALIAS  VARCHAR(60),
    DATATYPE     VARCHAR(60),
    SELECTABLE   CHAR(1),
    SEARCHABLE   CHAR(1),
    SORTABLE     CHAR(1),
    AUTOSEARCH   CHAR(1),
    MANDATORY    CHAR(1)
);

CREATE TABLE RB_FOLDER (
    FOLDER_ID  INTEGER,
    NAME       VARCHAR(60) NOT NULL,
    PARENT_ID  INTEGER NOT NULL
);

CREATE TABLE RB_ITEM (
    ITEM_ID    INTEGER,
    FOLDER_ID  INTEGER NOT NULL,
    NAME       VARCHAR(60) NOT NULL,
    ITEM_SIZE  INTEGER,
    ITEM_TYPE  INTEGER NOT NULL,
    MODIFIED   DOUBLE PRECISION NOT NULL,
    DELETED    DOUBLE PRECISION,
    TEMPLATE   BLOB SUB_TYPE 0 SEGMENT SIZE 400
);

CREATE TABLE RB_JOIN (
    TABLE_NAME1   VARCHAR(60) NOT NULL,
    TABLE_NAME2   VARCHAR(60) NOT NULL,
    JOIN_TYPE     VARCHAR(60),
    FIELD_NAMES1  VARCHAR(255),
    OPERATORS     VARCHAR(60),
    FIELD_NAMES2  VARCHAR(255)
);

CREATE TABLE RB_TABLE (
    TABLE_NAME   VARCHAR(60),
    TABLE_ALIAS  VARCHAR(60)
);

CREATE TABLE RECADOS (
    COD_RECADO                CODIGO NOT NULL,
    COD_FILIAL                CODIGO NOT NULL,
    COD_USUARIO_REMETENTE     CODIGO,
    COD_USUARIO_DESTINATARIO  CODIGO,
    DATA_CAD                  DATE,
    HORA_CAD                  TIME,
    DATA_PREVISTA             DATE,
    HORA_PREVISTA             TIME,
    COMENTARIO                OBSERVACAO,
    NAO_LIDO                  BOOLEAN_STR,
    CONCLUIDO                 BOOLEAN_STR,
    PRIORIDADE                DESCRICAO,
    DATA_CONCLUSAO            DATE,
    HORA_CONCLUSAO            TIME,
    COMENTARIO_CONCLUSAO      OBSERVACAO
);

CREATE TABLE RECIBO_AVULSO (
    CODIGO               CODIGO NOT NULL,
    USUARIO              CODIGO,
    DATA                 DATE,
    HORA                 TIME,
    REFERENTE            OBSERVACAO,
    RECEBIDO_DE          NOME,
    OBSERVACAO           OBSERVACAO,
    VALOR                VALOR,
    MOVIMENTO_CAIXA      CODIGO_EXTENSO,
    COD_FORMA_PAGAMENTO  CODIGO
);

CREATE TABLE REGISTRO (
    CNPJ                           CNPJ NOT NULL,
    NOME                           NOME NOT NULL,
    ABREVIATURA                    NOME NOT NULL,
    CODIGO_SINDICAL                VARCHAR(15) NOT NULL,
    CODIGO_SICAP                   NUMERO NOT NULL,
    APELIDO_SICAP                  NOME,
    APELIDO_SITCS                  NOME,
    ENDERECO_TIPO                  NOME NOT NULL,
    ENDERECO_LOGRADOURO            NOME NOT NULL,
    ENDERECO_NUMERO                NOME NOT NULL,
    ENDERECO_COMPLEMENTO           NOME,
    ENDERECO_BAIRRO                NOME NOT NULL,
    ENDERECO_CIDADE                NOME NOT NULL,
    ENDERECO_UF                    UF NOT NULL,
    ENDERECO_CEP                   CEP NOT NULL,
    TELEFONE                       TELEFONE NOT NULL,
    CONTATO                        NOME NOT NULL,
    AGENCIA                        VARCHAR(15) NOT NULL,
    CONFEDERATIVA                  BOOLEAN_STR,
    ASSISTENCIAL                   BOOLEAN_STR,
    SINDICAL                       BOOLEAN_STR,
    ASSOCIATIVA                    BOOLEAN_STR,
    PLANO_BASICO                   BOOLEAN_STR,
    PRESIDENTE                     NOME,
    CPF_PRESIDENTE                 CPF,
    EM_BRANCO                      BOOLEAN_STR,
    SITE                           NOME,
    EMAIL                          NOME,
    PROVEDOR                       NOME,
    DEMO                           BOOLEAN_STR,
    COD_SENHA_MASTER               CODIGO,
    PERMITIR_SENHA_MASTER          BOOLEAN_STR,
    EM_MANUTENCAO                  BOOLEAN_STR,
    VERIFICA_RETORNO_AUTOM         BOOLEAN_STR,
    USUARIO_VERIFICA_RETORNO       CODIGO,
    VERIFICA_MUDAR_STATUS_AUTOM    BOOLEAN_STR,
    USUARIO_VERIFICA_MUDAR_STATUS  CODIGO,
    CODIGO_INTERNO                 INTEGER,
    DATA_BASE                      DATE,
    EM_PROJETO                     BOOLEAN_STR,
    COD_UF                         INTEGER,
    POPULACAO                      INTEGER,
    E_UMA_FEDERACAO                BOOLEAN_STR,
    TIPO_DA_ENTIDADE               SMALLINT,
    COD_ENTIDADE_SINDICAL          CODIGO,
    VERSAO_BD                      NOME,
    COD_FILIAL                     CODIGO
);

CREATE TABLE REGRAS_ELEICAO (
    COD_REGRAS_ELEICAO        CODIGO NOT NULL,
    INFORMACAO_REGRA          OBSERVACAO,
    TEMPO_ASSOCIACAO          INTEGER,
    TEMPO_PAGAMENTO           INTEGER,
    TIRAR_APTOS               BOOLEAN_STR,
    EXIGIR_DATA_VOTACAO       BOOLEAN_STR,
    EXIGIR_DATA_EDITAL        BOOLEAN_STR,
    TEMPO_ASSOCIACAO_BASEADO  NOME
);

CREATE TABLE RELATORIO_COBRANCA (
    CODIGO           CODIGO NOT NULL,
    DESCRICAO        DESCRICAO,
    CAMINHO_ARQUIVO  DESCRICAO
);

CREATE TABLE RELATORIO_SISTEMA (
    COD_RELATORIO_SISTEMA      CODIGO NOT NULL,
    DESCRICAO                  NOME,
    COD_RELATORIO              CODIGO,
    ORDEM                      INTEGER,
    NOME                       NOME COLLATE WIN_PTBR,
    USA_PARAMETRO              BOOLEAN_STR,
    VISUALIZA_IMPRESSAO        BOOLEAN_STR,
    OPCOES_IMPRESSAO           BOOLEAN_STR,
    IMPRESSORA_PADRAO          NOME,
    TABELA_PESQUISA            NOME,
    CAMPO_TABELA_PESQUISA      NOME,
    CAMPO_PARAMETRO_RELATORIO  NOME
);

CREATE TABLE REMESSA_BANCO (
    COD_REMESSA_BANCO      CODIGO NOT NULL,
    COD_CONVENIO_COBRANCA  CODIGO,
    COD_FILIAL             CODIGO,
    COD_USUARIO_REMESSA    CODIGO,
    DATA_ENVIO_REMESSA     TIMESTAMP,
    SEQ_ARQUIVO            INTEGER,
    WEB_SERVICE            BOOLEAN_STR
);

CREATE TABLE REMESSA_BANCO_DETALHE (
    CODIGO               CODIGO NOT NULL,
    COD_REMESSA_BANCO    CODIGO,
    COD_ARRECADACAO      CODIGO_EXTENSO,
    OCORRENCIA_BANCARIA  NOME,
    GUIA_DA_WEB          BOOLEAN_STR,
    WS_AUTENTICACAO      NOME,
    WS_DATA              TIMESTAMP
);

CREATE TABLE REPIS (
    CODIGO                  CODIGO NOT NULL,
    COD_TABELA_RELACIONADA  CHAVE_STR,
    TABELA_RELACIONADA      NOME,
    COMPETENCIA             INTEGER,
    CERTIFICADO             DESCRICAO,
    RSS                     DESCRICAO
);

CREATE TABLE RESUMO_PROCESSAMENTO_RETORNO (
    CODIGO          CODIGO NOT NULL,
    DATA            DATE,
    HORA            TIME,
    ARQUIVO_ERRO    DESCRICAO,
    ARQUIVO_RESUMO  DESCRICAO
);

CREATE TABLE RETORNO_FEBRABAN (
    COD_LANCAMENTO  CODIGO GENERATED BY DEFAULT AS IDENTITY,
    COD_FEBRABAN    CHAVE_STR,
    DESCRICAO       DESCRICAO
);

CREATE TABLE RPA (
    COD_RPA            CODIGO NOT NULL,
    COD_FILIAL         CODIGO NOT NULL,
    COD_USUARIO        CODIGO,
    COD_FORNECEDOR     CHAVE_STR,
    DATA_CAD           DATE,
    OBS                OBSERVACAO,
    TOTAL_SERVICO      VALOR,
    DESCONTA_IPRF      BOOLEAN_STR COLLATE WIN_PTBR,
    VALOR_RECEBER      VALOR,
    INSS               VALOR,
    IRPF               VALOR,
    IRPF_BASE_CALCULO  VALOR,
    QTE_DEPENDENTES    INTEGER
);

CREATE TABLE RPA_ITENS (
    COD_RPA_ITENS   CODIGO NOT NULL,
    COD_RPA         CODIGO NOT NULL,
    COD_FILIAL_RPA  CODIGO NOT NULL,
    DESCRICAO       NOME,
    VALOR           VALOR,
    OBS             OBSERVACAO,
    DEBITO_CREDITO  BOOLEAN_STR
);

CREATE TABLE SALARIO_FAMILIA (
    CODIGO          CODIGO NOT NULL,
    USUARIO         CODIGO,
    REFERENCIA      DATE,
    LIMITE_INICIAL  VALOR,
    VALOR_INICIAL   VALOR,
    LIMITE_FINAL    VALOR,
    VALOR_FINAL     VALOR,
    LIMITE2         VALOR,
    FINAL2          VALOR,
    VALOR2          VALOR
);

CREATE TABLE SALARIOS (
    CODIGO                 CODIGO NOT NULL,
    SALARIO_MINIMO_BRASIL  VALOR,
    SALARIO_MINIMO_CLASSE  VALOR,
    REFERENCIA             DATE,
    PREMIO_COMISSIONISTA   VALOR,
    QUEBRA_CAIXA           VALOR,
    LIMITE_PREMIO          VALOR
);

CREATE TABLE SCRIPT_PROCESSADO (
    COD_SCRIPT_PROCESSADO  INTEGER NOT NULL,
    DESCRICAO              NOME,
    DATA                   DATE,
    HORA                   TIME
);

CREATE TABLE SEGMENTOS (
    COD_SEGMENTO  CODIGO NOT NULL,
    DESCRICAO     NOME
);

CREATE TABLE SEGMENTOS_CNAE (
    CODIGO        CODIGO NOT NULL,
    COD_CNAE      CNAE,
    COD_SEGMENTO  CODIGO
);

CREATE TABLE SEGURO_DESEMPREGO (
    CODIGO                  CODIGO NOT NULL,
    REFERENCIA              DATE,
    LIMITE_INICIAL          VALOR,
    ALIQUOTA_INICIAL        PERCENTUAL,
    ALIQUOTA_INTERMEDIARIA  PERCENTUAL,
    LIMITE_FINAL            VALOR,
    VALOR_FINAL             VALOR
);

CREATE TABLE SERVICOS_CONV_CONCORRENTE (
    CODIGO                   CODIGO NOT NULL,
    COD_SERVICO_PRINCIPAL    CODIGO,
    COD_SERVICO_CONCORRENTE  CODIGO
);

CREATE TABLE SINDICAL (
    CODIGO                CODIGO_EXTENSO NOT NULL,
    EMPRESA               CNPJ,
    DATA_EMISSAO          DATE,
    DATA_VENCIMENTO       DATE,
    DATA_BAIXA            DATE,
    COMPETENCIA           INTEGER,
    COMPLEMENTAR          INTEGER,
    VALOR                 VALOR,
    MULTA_JUROS           VALOR,
    VALOR_BAIXA           VALOR,
    USUARIO_EMISSAO       CODIGO,
    USUARIO_BAIXA         CODIGO,
    OBS_BAIXA             OBSERVACAO,
    TARIFA                VALOR,
    REPASSE_FEDERACAO     VALOR,
    REPASSE_CONFEDERACAO  VALOR,
    FORMA_BAIXA           NOME,
    COD_FORMA_PAGAMENTO   CODIGO,
    EM_COBRANCA           BOOLEAN_STR,
    COD_PROC_DETALHE      CODIGO
);

CREATE TABLE SINDICAL_CONTRIBUINTES (
    COD_SINDICAL_CONTRIBUINTES  CODIGO_EXTENSO NOT NULL,
    NOME                        NOME,
    FUNCAO                      NOME,
    VALOR_REMUNERACAO           VALOR,
    VALOR_RECOLHIDO             VALOR,
    COD_SINDICAL                CODIGO_EXTENSO
);

CREATE TABLE SITUACAO (
    CODIGO          CODIGO NOT NULL,
    DESCRICAO       NOME,
    CLUBE           BOOLEAN_STR,
    TEMPO           INTEGER,
    PESQUISA        BOOLEAN_STR,
    MENSALIDADE     BOOLEAN_STR,
    CONVENIOS       BOOLEAN_STR,
    PROXIMO_STATUS  CODIGO,
    COR             NOME,
    APTO_VOTO       BOOLEAN_STR
);

CREATE TABLE SOCIAL (
    CODIGO               CODIGO NOT NULL,
    EMPRESA              CNPJ,
    DATA_EMISSAO         DATE,
    DATA_VENCIMENTO      DATE,
    DATA_BAIXA           DATE,
    COMPETENCIA          INTEGER,
    COMPLEMENTAR         INTEGER,
    VALOR                VALOR,
    MULTA_JUROS          VALOR,
    VALOR_BAIXA          VALOR,
    USUARIO_EMISSAO      CODIGO,
    USUARIO_BAIXA        CODIGO,
    AGRUPADA             CODIGO_EXTENSO,
    COD_FORMA_PAGAMENTO  CODIGO
);

CREATE TABLE SOCIAL_ASSOCIADOS (
    CODIGO       INTEGER NOT NULL,
    SOCIAL       CODIGO,
    ASSOCIADO    CODIGO,
    MENSALIDADE  REFERENCIA,
    VALOR        VALOR
);

CREATE TABLE STATUS_ATENDIMENTO (
    COD_STATUS_ATENDIMENTO  CODIGO NOT NULL,
    DESCRICAO               NOME
);

CREATE TABLE STATUS_CHEQUE (
    COD_STATUS_CHEQUE  CODIGO NOT NULL,
    DESCRICAO          NOME,
    MOVIMENTA          BOOLEAN_STR,
    COR                NOME
);

CREATE TABLE STATUS_CONTAS (
    COD_STATUS       CODIGO NOT NULL,
    DESCRICAO        NOME,
    PERMITE_ALTERAR  BOOLEAN_STR
);

CREATE TABLE STATUS_DEPENDENTE (
    COD_STATUS_DEPENDENTE  CODIGO NOT NULL,
    DESCRICAO              NOME,
    COR                    NOME,
    VISIVEL                BOOLEAN_STR,
    MOVIMENTAR             BOOLEAN_STR
);

CREATE TABLE STATUS_ENTIDADE_EVENTO (
    COD_STATUS  CODIGO NOT NULL,
    DESCRICAO   NOME,
    COR         NOME
);

CREATE TABLE STATUS_FORNECEDOR (
    COD_STATUS       CODIGO NOT NULL,
    DESCRICAO        DESCRICAO,
    COR              NOME,
    PERMITE_PEDIDOS  BOOLEAN_STR,
    PERMITE_NF       BOOLEAN_STR
);

CREATE TABLE STATUS_HOMOLOGADOR (
    COD_STATUS  CODIGO NOT NULL,
    DESCRICAO   DESCRICAO,
    COR         DESCRICAO,
    LISTAR      BOOLEAN_STR DEFAULT 'T'
);

CREATE TABLE STATUS_INTEGRANTES_ENTID (
    COD_STATUS  CODIGO NOT NULL,
    DESCRICAO   NOME,
    COR         NOME
);

CREATE TABLE STATUS_MANDATO (
    COD_STATUS  CODIGO NOT NULL,
    DESCRICAO   DESCRICAO,
    COR         NOME
);

CREATE TABLE STATUS_MARCAR_HOMOLOGACAO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  DESCRICAO,
    COR        NOME
);

CREATE TABLE STATUS_REQUERIMENTO (
    COD_STATUS_REQUERIMENTO  CODIGO NOT NULL,
    DESCRICAO                NOME,
    COR                      NOME
);

CREATE TABLE TABELA_INSS (
    CODIGO                  CODIGO NOT NULL,
    REFERENCIA              DATE,
    LIMITE_INICIAL          VALOR,
    VALOR_INICIAL           VALOR,
    LIMITE_INICIAL1         VALOR,
    LIMITE_FINAL1           VALOR,
    VALOR_LIMITE1           VALOR,
    LIMITE_INICIAL2         VALOR,
    LIMITE_FINAL2           VALOR,
    VALOR_LIMITE2           VALOR,
    LIMITE_INICIAL3         VALOR,
    LIMITE_FINAL3           VALOR,
    VALOR_LIMITE3           VALOR,
    LIMITE_MAXIMO_DESCONTO  VALOR
);

CREATE TABLE TABELA_IRRF (
    CODIGO                 CODIGO NOT NULL,
    REFERENCIA             DATE,
    LIMITE_INICIAL         VALOR,
    ALIQUOTA_INICIAL       PERCENTUAL,
    VALOR_DEDUCAO_INICIAL  VALOR,
    LIMITE_INICIAL1        VALOR,
    LIMITE_FINAL1          VALOR,
    ALIQUOTA_INICIAL1      PERCENTUAL,
    VALOR_DEDUCAO_1        VALOR,
    LIMITE_FINAL           VALOR,
    ALIQUOTA_FINAL         PERCENTUAL,
    VALOR_DEDUCAO_FINAL    VALOR,
    DESCONTO_DEPENDENTE    VALOR,
    LIMITE_INICIAL2        VALOR,
    LIMITE_FINAL2          VALOR,
    ALIQUOTA_INICIAL2      PERCENTUAL,
    VALOR_DEDUCAO_2        VALOR,
    LIMITE_INICIAL3        VALOR,
    LIMITE_FINAL3          VALOR,
    ALIQUOTA_INICIAL3      PERCENTUAL,
    VALOR_DEDUCAO_3        VALOR
);

CREATE TABLE TABELAS_OTIMIZADAS (
    CODIGO          INTEGER NOT NULL,
    TABELA          NOME,
    TEMPO_ABERTURA  TIME
);

CREATE TABLE TABELAS_RELACIONADAS (
    COD_TABELAS_RELACIONADAS  CODIGO NOT NULL,
    DESCRICAO                 NOME,
    NOME_TABELA               NOME
);

CREATE TABLE TAGS (
    COD_TAGS                CODIGO NOT NULL,
    DESCRICAO               NOME,
    COD_TABELA_RELACIONADA  CODIGO
);

CREATE TABLE TAGS_ITEM (
    COD_TAG_ITEM  CODIGO NOT NULL,
    COD_TAG       CODIGO,
    TAG           NOME,
    DESCRICAO     NOME
);

CREATE TABLE TELEFONE (
    COD_TELEFONE            CODIGO NOT NULL,
    COD_TIPO_TELEFONE       CODIGO,
    TABELA_RELACIONADA      NOME,
    COD_TABELA_RELACIONADA  CHAVE_STR,
    TELEFONE                TELEFONE NOT NULL,
    OPERADORA               NOME,
    ORDEM                   SMALLINT,
    WHATSAPP                BOOLEAN_STR
);

CREATE TABLE TIPO_AFASTAMENTO (
    CODIGO  CODIGO NOT NULL,
    CAUSA   NOME
);

CREATE TABLE TIPO_ATENDIMENTO (
    CODIGO                     CODIGO NOT NULL,
    DESCRICAO                  NOME,
    RELACAO_EMPRESA            BOOLEAN_STR,
    RELACAO_CONTADOR           BOOLEAN_STR,
    RELACAO_ASSOCIADO          BOOLEAN_STR,
    RELACAO_CONVENIO           BOOLEAN_STR,
    AVISAR                     BOOLEAN_STR,
    RELACAO_FORNECEDOR         BOOLEAN_STR,
    RELACAO_COBRANCA           BOOLEAN_STR,
    RELACAO_ENTIDADE_SINDICAL  BOOLEAN_STR,
    RELACAO_JURIDICO           BOOLEAN_STR
);

CREATE TABLE TIPO_COBRANCA (
    COD_TIPO_COBRANCA                CODIGO NOT NULL,
    COD_CONVENIO_COBRANCA            CODIGO,
    COD_PLANO_CONTA                  CODIGO,
    DESCRICAO                        NOME,
    ATIVO                            BOOLEAN_STR,
    TITULO_DO_BOLETO_COBRANCA        OBSERVACAO COLLATE WIN_PTBR,
    FLAG                             ABREVIATURA COLLATE WIN_PTBR,
    LOCAL_DE_PAGAMENTO               NOME,
    INSTRUCAO_COBRANCA               OBSERVACAO,
    CAMINHO_IMAGEM                   DIRETORIO,
    CAMINHO_IMAGEM_CARNE             DIRETORIO,
    OBSERVACAO_BOLETO                OBSERVACAO,
    MULTA_JUROS_AUTOMATICO           BOOLEAN_STR,
    MODELO_DE_BOLETO                 NOME,
    NAO_GERAR_SE_JA_EXISTIR          BOOLEAN_STR,
    VERIFICAR_SE_NAO_GERADA          BOOLEAN_STR,
    PERIODICIDADE                    NOME,
    DATA_BASE_GUIAS_NAO_GERADAS      DATE,
    GERA_COBRANCA                    BOOLEAN_STR DEFAULT 'F',
    FORMATO_BOLETO                   NOME,
    DIAS_CALCULO_JUROS               SMALLINT,
    NAO_EXCLUIR_DUPLICADAS_NO_RECEB  BOOLEAN_STR,
    INICIO_DE_COBRANCA               DATE,
    BOLETOS_REGISTRADOS              BOOLEAN_STR,
    EMITE_SEM_VALOR                  BOOLEAN_STR,
    NAO_IMPRIME_VALOR                BOOLEAN_STR,
    GERAR_REMESSA                    BOOLEAN_STR,
    FIM_DE_COBRANCA                  DATE,
    TIPO_CALCULO_COBRANCA            NOME
);

CREATE TABLE TIPO_COBRANCA_ONDE_USAR (
    COD_TIPO_COBRANCA_ONDE  CODIGO NOT NULL,
    COD_TIPO_COBRANCA       CODIGO,
    ONDE_SERA_USADO         NOME
);

CREATE TABLE TIPO_ERRO_PROCESSAMENTO_RETORNO (
    COD_TIPO_ERRO_PROCESSAMENTO  CODIGO NOT NULL,
    DESCRICAO                    DESCRICAO,
    OBS                          OBSERVACAO
);

CREATE TABLE TIPO_EXAME (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME,
    EXPORTADO  BOOLEAN_STR COLLATE WIN_PTBR
);

CREATE TABLE TIPO_GUIA (
    COD_TIPO_GUIA  CODIGO NOT NULL,
    DESCRICAO      NOME,
    TABELA         NOME
);

CREATE TABLE TIPO_MOVIMENTO_CHEQUE (
    CODIGO         INTEGER NOT NULL,
    DESCRICAO      VARCHAR(60),
    ENTRADA_SAIDA  BOOLEAN_STR
);

CREATE TABLE TIPO_PROCESSO (
    COD_TIPO_PROCESSO  CODIGO NOT NULL,
    DESCRICAO          NOME
);

CREATE TABLE TIPO_SERVICO (
    CODIGO              CODIGO NOT NULL,
    DESCRICAO           DESCRICAO,
    SERVICO_MANUTENCAO  NOME
);

CREATE TABLE TIPO_TELEFONE (
    COD_TIPO_TELEFONE  CODIGO NOT NULL,
    DESCRICAO          NOME,
    MASCARA            NOME
);

CREATE TABLE TIPOPAGAMENTO (
    CODIGO     CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE TIPOSOCIO (
    CODIGO                        CODIGO NOT NULL,
    DESCRICAO                     NOME,
    MENSALIDADE                   BOOLEAN_STR,
    DESCRICAO_MASCULINO           NOME,
    DESCRICAO_FEMININA            NOME,
    USA_CONVENIOS                 BOOLEAN_STR,
    PODE_ALTERAR_VALOR            BOOLEAN_STR DEFAULT 'F',
    NAO_LIBERA_DISPENSA           BOOLEAN_STR DEFAULT 'F',
    USA_ULTIMO_VALOR_MENSALIDADE  BOOLEAN_STR DEFAULT 'F'
);

CREATE TABLE TMP_ERRO_PROCESSAMENTO (
    TIPO         DIRETORIO,
    NOSSONUMERO  NOME,
    VALORPAGO    VALOR,
    PAGAMENTO    DATE,
    ARQUIVO      NOME,
    OBS          OBSERVACAO,
    TARIFA       VALOR,
    VENCIMENTO   DATE
);

CREATE TABLE TMP_RESUMO_PROCESSAMENTO (
    TIPO               DIRETORIO,
    CNPJ               NOME,
    NOME               DIRETORIO,
    EMISSAO            DATE,
    VENCIMENTO         DATE,
    PAGAMENTO          DATE,
    NOSSONUMERO        NOME,
    SEUNUMERO          NOME,
    VALORPAGO          VALOR,
    VALOR              VALOR,
    TARIFA             VALOR,
    ARQUIVO            DIRETORIO,
    COD_TIPO_COBRANCA  CODIGO
);

CREATE TABLE UCTABRIGHTS (
    UCIDUSER    INTEGER,
    UCMODULE    VARCHAR(50),
    UCCOMPNAME  VARCHAR(50),
    UCKEY       VARCHAR(250)
);

CREATE TABLE UCTABRIGHTSEX (
    UCIDUSER    INTEGER,
    UCMODULE    VARCHAR(50),
    UCCOMPNAME  VARCHAR(50),
    UCFORMNAME  VARCHAR(50),
    UCKEY       VARCHAR(250)
);

CREATE TABLE UF (
    COD_UF       CODIGO NOT NULL,
    DESCRICAO    UF,
    COD_UF_IBGE  INTEGER,
    ALIQUOTA     PERCENTUAL
);

CREATE TABLE USUARIO (
    CODIGO                 CODIGO NOT NULL,
    NOME                   NOME,
    SENHA                  SENHA,
    ACESSO                 CODIGO,
    LOGIN                  NOME,
    DATA_CADASTRO          DATE,
    DATA_SAIDA             DATE,
    EMAIL                  NOME,
    SKYPE                  NOME,
    EXPIRA_EM              CHAR(10),
    SENHA_EXPIRA           INTEGER,
    DIAS_PARA_EXPIRAR      INTEGER,
    UCPRIVILEGED           INTEGER,
    UCTYPEREC              CHAR(1),
    UCPROFILE              INTEGER,
    UCKEY                  VARCHAR(250),
    UCINATIVE              INTEGER,
    PERMITE_BAIXAR_ZERADO  BOOLEAN_STR,
    COD_BASE_TERRITORIAL   CODIGO,
    FILIAL_PADRAO          CODIGO
);

CREATE TABLE VALOR_CONVITE (
    CODIGO   CODIGO NOT NULL,
    DATA     DATE,
    VALOR    VALOR,
    USUARIO  CODIGO
);

CREATE TABLE VALOR_ITENS_SERVICO (
    CODIGO                 CODIGO NOT NULL,
    CONVENIO_TIPO_SERVICO  CODIGO NOT NULL,
    VALOR                  VALOR,
    DESCRICAO              OBSERVACAO,
    LOCAL_PAGAMENTO        NOME DEFAULT 'SEDE'
);

CREATE TABLE VARA (
    COD_VARA   CODIGO NOT NULL,
    DESCRICAO  NOME
);

CREATE TABLE VERSAO (
    CODIGO               INTEGER NOT NULL,
    USUARIO              CODIGO,
    DATA                 DATE,
    ATUALIZACAO          NOME,
    SISTEMA              NOME,
    BASE_DADOS           NOME,
    DATA_GERACAO_CHAVE   DATE,
    CHAVE_GERADA_POR     NOME,
    ACAO_DA_CHAVE        CHAR(30),
    VERSAO_DO_SISTEMA    CHAR(30),
    VALIDADE_DO_SISTEMA  VARCHAR(30),
    CHAVE                BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    VALIDADE_DA_CHAVE    VARCHAR(30),
    SERIAL_HD            NOME
);

CREATE TABLE VOTO_ELETRONICO (
    COD_VOTO       INTEGER NOT NULL,
    COD_ASSOCIADO  INTEGER,
    COD_USUARIO    CODIGO,
    TIPO_URNA      NOME,
    DATA_VOTO      DATE,
    HORA_VOTO      TIME,
    URNA_PREVISTA  NOME COLLATE WIN_PTBR
);

CREATE TABLE WEB_SERVICE_ERROS (
    ID                 BIGINT GENERATED BY DEFAULT AS IDENTITY,
    DATA               TIMESTAMP,
    COD_ARRECADACAO    CODIGO_EXTENSO,
    GUIA_DA_WEB        BOOLEAN_STR,
    WS_RESPOSTA_XML    BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
    WS_DADOS_EXCECAO   BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
    WS_COD_ERRO        NOME,
    WS_DESCRICAO_ERRO  OBSERVACAO
);

CREATE TABLE WHATS_CONFIG (
    ID                         CODIGO NOT NULL,
    CONECTADO                  BOOLEAN_STR,
    COMANDO                    NOME,
    ULTIMA_VERIFICACAO_ONLINE  TIMESTAMP,
    QRCODE                     BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    INTERVALO_TEMPO_WHATSAPP   INTEGER,
    TEMPO_ENVIO_WHATSAPP       INTEGER
);

CREATE TABLE WHATS_ENVIO_TELEFONE (
    ID           INTEGER NOT NULL,
    NOME         NOME,
    CELULAR      TELEFONE,
    USAR_QUANDO  NOME
);

CREATE TABLE WHATS_FILA_ENVIO (
    ID           SMALLINT GENERATED BY DEFAULT AS IDENTITY,
    COD_USUARIO  CODIGO,
    DATA_CAD     TIMESTAMP,
    DATA_ENVIO   TIMESTAMP,
    MENSAGEM     OBSERVACAO,
    TELEFONE     TELEFONE,
    ARQUIVO      DIRETORIO,
    STATUS       CODIGO
);

CREATE TABLE WHATS_LOG (
    ID        BIGINT NOT NULL,
    COD_FILA  SMALLINT,
    DATA_LOG  TIMESTAMP,
    ACAO      DIRETORIO,
    STATUS    BOOLEAN_STR
);



/******************************************************************************/
/***                        Autoincrement generators                        ***/
/******************************************************************************/

ALTER TABLE ACESSO ALTER ID RESTART WITH 2;
ALTER TABLE RETORNO_FEBRABAN ALTER COD_LANCAMENTO RESTART WITH 37;
ALTER TABLE WEB_SERVICE_ERROS ALTER ID RESTART WITH 0;
ALTER TABLE WHATS_FILA_ENVIO ALTER ID RESTART WITH 0;




/******************************************************************************/
/***                           Unique constraints                           ***/
/******************************************************************************/

ALTER TABLE ASSISTENCIAL ADD CONSTRAINT UNQ_ASSISTENCIAL UNIQUE (EMPRESA, COMPETENCIA, COMPLEMENTAR);
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT UNQ_CONFEDERATIVA UNIQUE (EMPRESA, COMPETENCIA, COMPLEMENTAR);
ALTER TABLE ENTIDADE_SINDICAL ADD CONSTRAINT UNQ1_ENTIDADE_SINDICAL UNIQUE (CODIGO_SINDICAL);
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT UNQ_PAGAMENTO_SERVICO UNIQUE (DATA_VENCIMENTO, COD_LANCAMENTO_SERVICO);
ALTER TABLE PLANO_BASICO ADD CONSTRAINT UNQ_PLANO_BASICO UNIQUE (EMPRESA, COMPETENCIA, COMPLEMENTAR);
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT UNQ1_PROCESSAMENTO_DETALHES UNIQUE (HASH_CODE);
ALTER TABLE SINDICAL ADD CONSTRAINT UNQ_SINDICAL UNIQUE (EMPRESA, COMPETENCIA, COMPLEMENTAR);
ALTER TABLE SOCIAL ADD CONSTRAINT UNQ1_SOCIAL UNIQUE (EMPRESA, COMPETENCIA, COMPLEMENTAR);
ALTER TABLE SOCIAL_ASSOCIADOS ADD CONSTRAINT UNQ1_SOCIAL_ASSOCIADOS UNIQUE (ASSOCIADO, MENSALIDADE);


/******************************************************************************/
/***                              Primary keys                              ***/
/******************************************************************************/

ALTER TABLE ACESSO ADD CONSTRAINT PK_ACESSO PRIMARY KEY (ID);
ALTER TABLE ACORDO ADD CONSTRAINT PK_ACORDO PRIMARY KEY (COD_ACORDO);
ALTER TABLE ACORDO_DETALHE ADD CONSTRAINT PK_ACORDO_DETALHE PRIMARY KEY (COD_ACORDO_DETALHE);
ALTER TABLE ADVOGADOS ADD CONSTRAINT PK_ADVOGADOS PRIMARY KEY (COD_ADVOGADO);
ALTER TABLE AGENDAMENTO_SERVICO ADD CONSTRAINT PK_AGENDAMENTO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE AGENDAM_HOMO_WEB ADD CONSTRAINT PK_AGENDAM_HOMO_WEB PRIMARY KEY (CODIGO);
ALTER TABLE AGENDAM_HOMO_WEB_CONFIRM ADD CONSTRAINT PK_AGENDAM_HOMO_WEB_CONFIRM PRIMARY KEY (CODIGO);
ALTER TABLE AGENDAM_HOMO_WEB_EVENTO ADD CONSTRAINT PK_AGENDAM_HOMO_WEB_EVENTO PRIMARY KEY (CODIGO);
ALTER TABLE AGENDA_DE_HORARIOS_LIBERADO ADD CONSTRAINT PK_AGENDA_DE_HORARIOS_LIBERADO PRIMARY KEY (CODIGO);
ALTER TABLE AGENDA_TELEFONICA ADD CONSTRAINT PK_AGENDA PRIMARY KEY (CODIGO);
ALTER TABLE ARRECADACAO ADD CONSTRAINT PK_ARRECADACAO PRIMARY KEY (COD_ARRECADACAO);
ALTER TABLE ARRECADACAO_ACORDO ADD CONSTRAINT PK_ARRECADACAO_ACORDO PRIMARY KEY (COD_ARRECADACAO_ACORDO);
ALTER TABLE ARRECADACAO_DESCONTO ADD CONSTRAINT PK_ARRECADACAO_DESCONTO PRIMARY KEY (COD_ARRECADACAO_DESCONTO);
ALTER TABLE ARRECADACAO_DETALHE ADD CONSTRAINT PK_ARRECADACAO_DETALHE PRIMARY KEY (COD_ARRECADACAO_DETALHE);
ALTER TABLE ARRECADACAO_HISTORICO ADD CONSTRAINT PK_ARRECADACAO_HISTORICO PRIMARY KEY (COD_ARRECADACAO_HISTORICO);
ALTER TABLE ARRECADACAO_STATUS ADD CONSTRAINT PK_ARRECADACAO_STATUS PRIMARY KEY (COD_STATUS);
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT PK_ASSISTENCIAL PRIMARY KEY (CODIGO);
ALTER TABLE ASSISTENCIAL_ATRAZO ADD CONSTRAINT PK_ASSISTENCIAL_ATRAZO PRIMARY KEY (NOVA_GUIA);
ALTER TABLE ASSOCIADO ADD CONSTRAINT PK_ASSOCIADO PRIMARY KEY (CODIGO);
ALTER TABLE ASSOCIADO_GRUPO ADD CONSTRAINT PK_ASSOCIADO_GRUPO PRIMARY KEY (CODIGO);
ALTER TABLE ASSOCIADO_GRUPO_FATURAMENTO ADD CONSTRAINT PK_ASSOCIADO_GRUPO_FATURAMENTO PRIMARY KEY (COD_ASSOCIADO_GRUPO_FATURA);
ALTER TABLE ASSOCIADO_MUDANCA ADD CONSTRAINT PK_ASSOCIADO_MUDANCA PRIMARY KEY (CODIGO);
ALTER TABLE ASSOCIATIVA ADD CONSTRAINT PK_ASSOCIATIVA PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_ASSOCIADO ADD CONSTRAINT PK_ATENDIMENTO_ASSOCIADO PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_CLI_PROCESSO ADD CONSTRAINT PK_ATENDIMENTO_CLI_PROCESSO PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_COBRANCA ADD CONSTRAINT PK_ATENDIMENTO_COBRANCA PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_COMERCIARIO ADD CONSTRAINT PK_ATENDIMENTO_COMERCIARIO PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_CONTABILIDADE ADD CONSTRAINT PK_ATENDIMENTO_CONTABILIDAD PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_EMPRESA ADD CONSTRAINT PK_ATENDIMENTO_EMPRESA PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT PK_ATENDIMENTO_ENTIDADE_SINDICA PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_FORNECEDOR ADD CONSTRAINT PK_ATENDIMENTO_FORNECEDOR PRIMARY KEY (CODIGO);
ALTER TABLE ATENDIMENTO_JURIDICO ADD CONSTRAINT PK_ATENDIMENTO_JURIDICO PRIMARY KEY (CODIGO);
ALTER TABLE ATUALIZACAO ADD CONSTRAINT PK_ATUALIZACAO PRIMARY KEY (COD_ATUALIZACAO);
ALTER TABLE AUDIENCIA_PROCESSO ADD CONSTRAINT PK_AUDIENCIA_PROCESSO PRIMARY KEY (COD_AUDIENCIA_PROCESSO);
ALTER TABLE BACKUP ADD CONSTRAINT PK_BACKUP PRIMARY KEY (CODIGO);
ALTER TABLE BANCO ADD CONSTRAINT PK_BANCO PRIMARY KEY (CODIGO);
ALTER TABLE BASE_TERRITORIAL ADD CONSTRAINT PK_BASE_TERRITORIAL PRIMARY KEY (COD_BASE);
ALTER TABLE BASE_TERRITORIAL_CIDADES ADD CONSTRAINT PK_BASE_TERRITORIAL_CIDADES PRIMARY KEY (COD_CIDADE);
ALTER TABLE BORDERO ADD CONSTRAINT PK_BORDERO PRIMARY KEY (COD_BORDERO);
ALTER TABLE BORDERO_ITENS ADD CONSTRAINT PK_BORDERO_ITENS PRIMARY KEY (COD_BORDERO_ITENS);
ALTER TABLE CADASTRO_CHEQUE ADD CONSTRAINT PK_CADASTRO_CHEQUE PRIMARY KEY (CODIGO);
ALTER TABLE CADASTRO_CHEQUE_EMITIDO ADD CONSTRAINT PK_CADASTRO_CHEQUE_EMITIDO PRIMARY KEY (CODIGO);
ALTER TABLE CAIXA_AJUSTE ADD CONSTRAINT PK_CAIXA_AJUSTE PRIMARY KEY (COD_CAIXA_AJUSTE);
ALTER TABLE CAIXA_ESTORNO ADD CONSTRAINT PK_CAIXA_ESTORNO PRIMARY KEY (COD_CAIXA_ESTORNO);
ALTER TABLE CAIXA_EVENTO ADD CONSTRAINT PK_CAIXA_EVENTO PRIMARY KEY (COD_CAIXA_EVENTO);
ALTER TABLE CAIXA_MOVIMENTACAO ADD CONSTRAINT PK_CAIXA_MOVIMENTACAO PRIMARY KEY (COD_CAIXA_MOVIMENTACAO);
ALTER TABLE CAIXA_SAIDA ADD CONSTRAINT PK_CAIXA_SAIDA PRIMARY KEY (CODIGO);
ALTER TABLE CAIXA_USUARIOS_LIBERADOS ADD CONSTRAINT PK_CAIXA_USUARIOS_LIBERADOS PRIMARY KEY (COD_CAIXA_USUARIOS_LIBERADOS);
ALTER TABLE CALCULO_RESCISAO ADD CONSTRAINT PK_CALCULO_RESCISAO PRIMARY KEY (CODIGO);
ALTER TABLE CALCULO_RESCISAO_ITEMS ADD CONSTRAINT PK_CALCULO_RESCISAO_ITEMS PRIMARY KEY (CODIGO);
ALTER TABLE CANAIS_RECEBIMENTO ADD CONSTRAINT PK_CANAIS_RECEBIMENTO PRIMARY KEY (CODIGO);
ALTER TABLE CARTEIRINHA ADD CONSTRAINT PK_CARTEIRINHA PRIMARY KEY (CODIGO);
ALTER TABLE CENSO ADD CONSTRAINT PK_CENSO PRIMARY KEY (COD_CENSO);
ALTER TABLE CENSO_BASE_TERRITORIAL ADD CONSTRAINT PK_CENSO_BASE_TERRITORIAL PRIMARY KEY (COD_CENSO_BASE_TERRITORIAL);
ALTER TABLE CENTRO_CUSTO ADD CONSTRAINT PK_CENTRO_CUSTO PRIMARY KEY (COD_CENTRO_CUSTO);
ALTER TABLE CHECK_LIST_HOMOLOGACAO ADD CONSTRAINT PK_CHECK_LIST_HOMOLOGACAO PRIMARY KEY (CODIGO);
ALTER TABLE CHEQUE_MOVIMENTACAO ADD CONSTRAINT PK_CHEQUE_MOVIMENTACAO PRIMARY KEY (CODIGO);
ALTER TABLE CLIENTES_PROCESSOS ADD CONSTRAINT PK_CLIENTES_PROCESSOS PRIMARY KEY (COD_CLIENTE_PROCESSO);
ALTER TABLE CNAEF ADD CONSTRAINT PK_CNAEF PRIMARY KEY (COD_CNAE);
ALTER TABLE COBRANCA ADD CONSTRAINT PK_COBRANCA PRIMARY KEY (COD_COBRANCA);
ALTER TABLE COBRANCA_DETALHE ADD CONSTRAINT PK_COBRANCA_DETALHE PRIMARY KEY (COD_COBRANCA_DETALHE);
ALTER TABLE COBRANCA_FILA ADD CONSTRAINT PK_COBRANCA_FILA PRIMARY KEY (COD_COBRANCA_FILA);
ALTER TABLE COBRANCA_STATUS ADD CONSTRAINT PK_COBRANCA_STATUS PRIMARY KEY (COD_STATUS);
ALTER TABLE COBRANCA_TIMELINE_STATUS ADD CONSTRAINT PK_COBRANCA_TIMELINE_STATUS PRIMARY KEY (COD_TIMELINE_STATUS);
ALTER TABLE CODIGO_ERRO_PROCESSAMENTO ADD CONSTRAINT PK_CODIGO_ERRO_PROCESSAMENTO PRIMARY KEY (CODIGO);
ALTER TABLE COMARCA ADD CONSTRAINT PK_COMARCA PRIMARY KEY (COD_COMARCA);
ALTER TABLE COMERCIARIO ADD CONSTRAINT PK_COMERCIARIO PRIMARY KEY (CODIGO);
ALTER TABLE COMPROMISSO ADD CONSTRAINT PK_COMPROMISSO PRIMARY KEY (CODIGO);
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT PK_CONFEDERATIVA PRIMARY KEY (CODIGO);
ALTER TABLE CONFIGURACAO ADD CONSTRAINT PK_CONFIGURACAO PRIMARY KEY (CODIGO);
ALTER TABLE CONFIGURACAO_BACKUP ADD CONSTRAINT PK_CONFIGURACAO_BACKUP PRIMARY KEY (COD_CONF_BKP);
ALTER TABLE CONFIGURACAO_BACKUP_LISTA ADD CONSTRAINT PK_CONFIGURACAO_BACKUP_LISTA PRIMARY KEY (COD_CONF_BKP_LISTA);
ALTER TABLE CONFIGURACAO_EMPRESA ADD CONSTRAINT PK_CONFIGURACAO_EMPRESA PRIMARY KEY (COD_CONF_EMPRESA);
ALTER TABLE CONFIGURACAO_ENTIDADE_SINDICAL ADD CONSTRAINT PK_CONFIGURACAO_ENTIDADE_SINDIC PRIMARY KEY (COD_CONF_ENTIDADE);
ALTER TABLE CONFIGURACAO_FORNECEDOR ADD CONSTRAINT PK_CONFIGURACAO_FORNECEDOR PRIMARY KEY (COD_CONF_FORNECEDOR);
ALTER TABLE CONFIGURACAO_GUIA_ARRECADACAO ADD CONSTRAINT PK_CONFIGURACAO_GUIA_ARRECADACA PRIMARY KEY (CODIGO);
ALTER TABLE CONFIGURACAO_PLANO_BASICO ADD CONSTRAINT PK_CONFIGURACAO_PLANO_BASICO PRIMARY KEY (CODIGO);
ALTER TABLE CONFIGURACAO_SOCIAL ADD CONSTRAINT PK_CONFIGURACAO_SOCIAL PRIMARY KEY (CODIGO);
ALTER TABLE CONFIGURACAO_WEB ADD CONSTRAINT PK_CONFIGURACAO_WEB PRIMARY KEY (COD_CONF_WEB);
ALTER TABLE CONFIG_AGENDAMENTO_SERVICO ADD CONSTRAINT PK_CONFIG_AGENDAMENTO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE CONFIG_ATUALIZA_CAD_AUT ADD CONSTRAINT PK_CONFIG_ATUALIZA_CAD_AUT PRIMARY KEY (CODIGO);
ALTER TABLE CONSULTAS ADD CONSTRAINT PK_CONSULTAS PRIMARY KEY (CODIGO);
ALTER TABLE CONSULTA_DADOS_CADASTRAIS ADD CONSTRAINT PK_CONSULTA_DADOS_CADASTRAIS PRIMARY KEY (CODIGO);
ALTER TABLE CONSULTA_RECEITA ADD CONSTRAINT PK_CONSULTA_RECEITA PRIMARY KEY (COD_CONSULTA_RECEITA);
ALTER TABLE CONTABILIDADE ADD CONSTRAINT PK_CONTABILIDADE PRIMARY KEY (CNPJ);
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT PK_CONTAS_PAGAR PRIMARY KEY (COD_CONTA_PAGAR);
ALTER TABLE CONTAS_RECEBER ADD CONSTRAINT PK_CONTAS_RECEBER PRIMARY KEY (CODIGO);
ALTER TABLE CONTATO_FORNECEDOR ADD CONSTRAINT PK_CONTATO_FORNECEDOR PRIMARY KEY (CODIGO);
ALTER TABLE CONTA_BANCARIA ADD CONSTRAINT PK_CONTA_BANCARIA PRIMARY KEY (COD_CONTA);
ALTER TABLE CONTROLE_STATUS ADD CONSTRAINT PK_CONTROLE_STATUS PRIMARY KEY (CODIGO);
ALTER TABLE CONVENCAO ADD CONSTRAINT PK_CONVENCAO PRIMARY KEY (CODIGO);
ALTER TABLE CONVENCAO_BASE ADD CONSTRAINT PK_CONVENCAO_BASE PRIMARY KEY (COD_CONV_BASE);
ALTER TABLE CONVENCAO_SEGMENTO ADD CONSTRAINT PK_CONVENCAO_SEGMENTO PRIMARY KEY (COD_CONV_SEGMENTO);
ALTER TABLE CONVENCAO_VENCIMENTOS ADD CONSTRAINT PK_CONVENCAO_VENCIMENTOS PRIMARY KEY (COD_CONV_VENCIMENTOS);
ALTER TABLE CONVENIO ADD CONSTRAINT PK_CONVENIO PRIMARY KEY (CODIGO);
ALTER TABLE CONVENIO_BANCARIO ADD CONSTRAINT PK_CONVENIO_BANCARIO PRIMARY KEY (COD_CONVENIO_BANCO);
ALTER TABLE CONVENIO_COBRANCA ADD CONSTRAINT PK_CONVENIO_COBRANCA PRIMARY KEY (COD_CONVENIO_COBRANCA);
ALTER TABLE CONVENIO_COBRANCA_CONVECAO ADD PRIMARY KEY (CODIGO);
ALTER TABLE CONVENIO_TIPO_SERVICO ADD CONSTRAINT PK_CONVENIO_TIPO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE CONVENIO_TIPO_SERV_ESPECIALID ADD CONSTRAINT PK_CONVENIO_TIPO_SERV_ESPECIALI PRIMARY KEY (CODIGO);
ALTER TABLE CONVENIO_TIPO_SERV_EXCESSAO ADD CONSTRAINT PK_CONVENIO_TIPO_SERV_EXCESSAO PRIMARY KEY (CODIGO);
ALTER TABLE CONVITE ADD CONSTRAINT PK_CONVITE PRIMARY KEY (CODIGO);
ALTER TABLE CONV_COB_CANAIS_PAGAMENTO ADD CONSTRAINT PK_CONV_COB_CANAIS_PAGAMENTO PRIMARY KEY (COD_CANAIS);
ALTER TABLE CONV_COB_TABELA_TARIFAS ADD CONSTRAINT PK_CONV_COB_TABELA_TARIFAS PRIMARY KEY (COD_CONV_COB_TABELA_TARIFAS);
ALTER TABLE CONV_COB_TARIFA_CANAIS ADD CONSTRAINT PK_CONV_COB_TARIFA_CANAIS PRIMARY KEY (COD_TARIFA_CANAIS);
ALTER TABLE CURIOSIDADES ADD CONSTRAINT PK_CURIOSIDADES PRIMARY KEY (CODIGO);
ALTER TABLE DECLARACAO_ARQUIVO ADD CONSTRAINT PK_DECLARACAO_ARQUIVO PRIMARY KEY (CODIGO);
ALTER TABLE DEPENDENTE ADD CONSTRAINT PK_DEPENDENTE PRIMARY KEY (CODIGO);
ALTER TABLE DEPENDENTE_COMERCIARIO ADD CONSTRAINT PK_DEPENDENTE_COM PRIMARY KEY (CODIGO);
ALTER TABLE DEVOLUCAO_DOCUMENTOS ADD CONSTRAINT PK_DEVOLUCAO_DOCUMENTOS PRIMARY KEY (COD_DEVOLUCAO);
ALTER TABLE DISPENSA_RECOLHIMENTO ADD CONSTRAINT PK_DISPENSA_RECOLHIMENTO PRIMARY KEY (COD_DISPENSA_RECOLHIMENTO);
ALTER TABLE DOCUMENTO_CONTROLE ADD CONSTRAINT PK_DOCUMENTO_CONTROLE PRIMARY KEY (COD_CONTROLE);
ALTER TABLE DOCUMENTO_DESTINO ADD CONSTRAINT PK_DOCUMENTO_DESTINO PRIMARY KEY (COD_DESTINO_DOCUMENTO);
ALTER TABLE DOCUMENTO_TIPO ADD CONSTRAINT PK_DOCUMENTO_TIPO PRIMARY KEY (COD_DOCUMENTO_TIPO);
ALTER TABLE EMAILS_SUPORTE ADD CONSTRAINT PK_EMAILS_SUPORTE PRIMARY KEY (CODIGO);
ALTER TABLE EMAIL_ENVIADO ADD CONSTRAINT PK_EMAIL_ENVIADO PRIMARY KEY (ID);
ALTER TABLE EMPRESA ADD CONSTRAINT PK_EMPRESA PRIMARY KEY (CNPJ);
ALTER TABLE EMPRESA_CONTATOS ADD CONSTRAINT PK_EMPRESA_CONTATOS PRIMARY KEY (CODIGO);
ALTER TABLE EMPRESA_CONVENIO ADD CONSTRAINT PK_EMPRESA_CONVENIO PRIMARY KEY (COD_EMPRESA_CONVENIO);
ALTER TABLE EMPRESA_GRUPO ADD CONSTRAINT PK_EMPRESA_GRUPO PRIMARY KEY (CODIGO);
ALTER TABLE EMPRESA_MUDANCA ADD CONSTRAINT PK_EMPRESA_MUDANCA PRIMARY KEY (CODIGO);
ALTER TABLE EMPRESA_MUDANCA_MOTIVO ADD CONSTRAINT PK_EMPRESA_MUDANCA_MOTIVO PRIMARY KEY (COD_MOTIVO_MUDANCA_STATUS);
ALTER TABLE EMPRESA_PORTE ADD CONSTRAINT PK_COD_PORTE PRIMARY KEY (COD_PORTE);
ALTER TABLE EMPRESA_STATUS ADD CONSTRAINT PK_EMPRESA_STATUS PRIMARY KEY (COD_EMPRESA_STATUS);
ALTER TABLE ENQUADRAMENTO_VERIFICACAO ADD CONSTRAINT PK_ENQUADRAMENTO_VERIFICACAO PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_EVENTO ADD CONSTRAINT PK_ENTIDADE_EVENTO PRIMARY KEY (COD_ENTIDADE_EVENTO);
ALTER TABLE ENTIDADE_EVENTO_PARTICIPANTE ADD CONSTRAINT PK_ENTIDADE_EVENTO_PARTICIPANTE PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_MANDATO ADD CONSTRAINT PK_ENTIDADE_MANDATO PRIMARY KEY (COD_ENTIDADE_MANDATO);
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT PK_ENTIDADE_MUDANCA_STATUS PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_SINDICAL ADD CONSTRAINT PK_ENTIDADE_SINDICAL PRIMARY KEY (COD_ENTIDADE_SINDICAL);
ALTER TABLE ENTIDADE_SINDICAL_ARQUIVOS ADD CONSTRAINT PK_ENTIDADE_SINDICAL_ARQUIVOS PRIMARY KEY (COD_ENTIDADE_ARQUIVO);
ALTER TABLE ENTIDADE_SINDICAL_ARQUIVOS_DET ADD CONSTRAINT PK_ENTIDADE_SINDICAL_ARQUIVOS_D PRIMARY KEY (COD_ENTIDADE_ARQUIVO_DET);
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT PK_ENTIDADE_SINDICAL_BASE PRIMARY KEY (COD_BASE);
ALTER TABLE ENTIDADE_SINDICAL_BASE_CIDADES ADD CONSTRAINT PK_ENTIDADE_SINDICAL_BASE_CID PRIMARY KEY (COD_BASE_CID);
ALTER TABLE ENTIDADE_SINDICAL_BASE_EXCLUSAO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_BASE_EXCLU PRIMARY KEY (COD_BASE_EXCLUSAO);
ALTER TABLE ENTIDADE_SINDICAL_BASE_SEG ADD CONSTRAINT PK_ENTIDADE_SINDICAL_BASE_SEG PRIMARY KEY (COD_ENTIDADE_SIND_BASE_SEG);
ALTER TABLE ENTIDADE_SINDICAL_CARGO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_CARGO PRIMARY KEY (COD_CARGO_ENTIDADE_SINDICAL);
ALTER TABLE ENTIDADE_SINDICAL_CEDENTES ADD CONSTRAINT PK_ENTIDADE_SINDICAL_CEDENTES PRIMARY KEY (COD_ENTIDADE_CEDENTES);
ALTER TABLE ENTIDADE_SINDICAL_CONTATOS ADD CONSTRAINT PK_ENTIDADE_SINDICAL_CONTATOS PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_SINDICAL_ENDERECOS ADD CONSTRAINT PK_ENTIDADE_SINDICAL_ENDERECOS PRIMARY KEY (COD_ENT_SIND_ENDERECO);
ALTER TABLE ENTIDADE_SINDICAL_GRUPO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_GRUPO PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT PK_ENTIDADE_SINDICAL_INTEGRANTE PRIMARY KEY (COD_INTEGRANTE);
ALTER TABLE ENTIDADE_SINDICAL_LOG_FILIACAO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_LOG_FILIAC PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_SINDICAL_REP_ABRAN ADD CONSTRAINT PK_ENT_REP_SINDICAL_ABRAN PRIMARY KEY (COD_ABRANGENCIA);
ALTER TABLE ENTIDADE_SINDICAL_REP_AREA_GEO ADD CONSTRAINT PK_ENT_SINDICAL_REP_AREA_G PRIMARY KEY (COD_AREA_GEOECONOMICA);
ALTER TABLE ENTIDADE_SINDICAL_REP_CLASSE ADD CONSTRAINT PK_ENTIDADE_SINDICAL_REP_CLASSE PRIMARY KEY (COD_CLASSE);
ALTER TABLE ENTIDADE_SINDICAL_REP_GRUPO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_REP_GRUPO PRIMARY KEY (COD_GRUPO);
ALTER TABLE ENTIDADE_SINDICAL_REQUER ADD CONSTRAINT PK_ENTIDADE_SINDICAL_REQUER PRIMARY KEY (COD_ENTIDADE_REQUERIMENTO);
ALTER TABLE ENTIDADE_SINDICAL_SEGMENTO ADD CONSTRAINT PK_ENTIDADE_SINDICAL_SEGMENTO PRIMARY KEY (COD_SEGMENTO);
ALTER TABLE ENTIDADE_SINDICAL_SEG_CNAE ADD CONSTRAINT PK_ENTIDADE_SINDICAL_SEG_CNAE PRIMARY KEY (CODIGO);
ALTER TABLE ENTIDADE_SINDICAL_STATUS ADD CONSTRAINT PK_ENTIDADE_SINDICAL_STATUS PRIMARY KEY (COD_ENTIDADE_SINDICAL_STATUS);
ALTER TABLE ENTIDADE_SINDICAL_TELEFONES ADD CONSTRAINT PK_ENTIDADE_SINDICAL_TELEFONES PRIMARY KEY (COD_ENT_SIND_TELEFONE);
ALTER TABLE EQUIPAMENTOS ADD CONSTRAINT PK_EQUIPAMENTOS PRIMARY KEY (CODIGO);
ALTER TABLE ESPECIALIDADES_MEDICAS ADD CONSTRAINT PK_ESPECIALIDADES_MEDICAS PRIMARY KEY (COD_ESPECIALIDADE_MEDICA);
ALTER TABLE ESTADOCIVIL ADD CONSTRAINT PK_ESTADOCIVIL PRIMARY KEY (CODIGO);
ALTER TABLE ESTORNO ADD CONSTRAINT PK_ESTORNO PRIMARY KEY (COD_ESTORNO);
ALTER TABLE ESTORNO_ARRECADACAO_DETALHE ADD CONSTRAINT PK_ESTORNO_ARRECADACAO_DETALHE PRIMARY KEY (CODIGO);
ALTER TABLE ESTORNO_CONTATOS ADD CONSTRAINT PK_ESTORNO_CONTATOS PRIMARY KEY (COD_ESTORNO_CONTATOS);
ALTER TABLE ESTORNO_DETALHE ADD CONSTRAINT PK_ESTORNO_DETALHE PRIMARY KEY (COD_ESTORNO_DETALHE);
ALTER TABLE ESTORNO_EVENTO ADD CONSTRAINT PK_ESTORNO_EVENTO PRIMARY KEY (COD_ESTORNO_EVENTO);
ALTER TABLE ESTORNO_GUIAS ADD CONSTRAINT PK_ESTORNO_GUIAS PRIMARY KEY (COD_ESTORNO_GUIAS);
ALTER TABLE ESTORNO_MOTIVO ADD CONSTRAINT PK_ESTORNO_MOTIVO PRIMARY KEY (COD_ESTORNO_MOTIVO);
ALTER TABLE ESTORNO_STATUS ADD CONSTRAINT PK_ESTORNO_STATUS PRIMARY KEY (COD_ESTORNO_STATUS);
ALTER TABLE ETIQUETAS_ENVELOPES ADD CONSTRAINT PK_ETIQUETAS_ENVELOPES PRIMARY KEY (CODIGO);
ALTER TABLE EXAMES ADD CONSTRAINT PK_EXAMES PRIMARY KEY (CODIGO);
ALTER TABLE EXAME_VALOR ADD CONSTRAINT PK_EXAME_VALOR PRIMARY KEY (CODIGO);
ALTER TABLE EXTENSAO_BASE ADD CONSTRAINT PK_EXTENSAO_BASE PRIMARY KEY (COD_EXTENSAO);
ALTER TABLE FAA_CONTRIBUINTES ADD CONSTRAINT PK_FAA_CONTRIBUINTES PRIMARY KEY (COD_FAA_CONTRIBUINTES);
ALTER TABLE FATURAMENTO ADD CONSTRAINT PK_FATURAMENTO PRIMARY KEY (COD_FATURAMENTO);
ALTER TABLE FATURAMENTO_MODELO ADD CONSTRAINT PK_FATURAMENTO_MODELO PRIMARY KEY (COD_FATURAMENTO_MODELO);
ALTER TABLE FERIADOS ADD CONSTRAINT PK_FERIADOS PRIMARY KEY (CODIGO);
ALTER TABLE FERIADOS_CIDADES ADD CONSTRAINT PK_FERIADOS_CIDADES PRIMARY KEY (COD_FERIADOS_CIDADES);
ALTER TABLE FILA ADD CONSTRAINT PK_FILA PRIMARY KEY (COD_FILA);
ALTER TABLE FILA_ETAPA ADD CONSTRAINT PK_FILA_ETAPA PRIMARY KEY (COD_FILA_ETAPA);
ALTER TABLE FILA_MOVIMENTO ADD CONSTRAINT PK_FILA_MOVIMENTO PRIMARY KEY (COD_FILA_MOVIMENTO);
ALTER TABLE FILIAL ADD CONSTRAINT PK_FILIAL PRIMARY KEY (COD_FILIAL);
ALTER TABLE FORMAPAGAMENTO ADD CONSTRAINT PK_FORMAPAGAMENTO PRIMARY KEY (CODIGO);
ALTER TABLE FORMA_ARRECADACAO ADD CONSTRAINT PK_FORMA_ARRECADACAO PRIMARY KEY (COD_FORMA_ARRECADACAO);
ALTER TABLE FORMA_TRATAMENTO ADD CONSTRAINT PK_FORMA_TRATAMENTO PRIMARY KEY (COD_FORMA_TRATAMENTO);
ALTER TABLE FORNECEDOR ADD CONSTRAINT PK_FORNECEDOR PRIMARY KEY (COD_FORNECEDOR);
ALTER TABLE FRASES ADD CONSTRAINT PK_FRASES PRIMARY KEY (COD_FRASE);
ALTER TABLE GPS ADD CONSTRAINT PK_GPS PRIMARY KEY (COD_GPS);
ALTER TABLE GRUPO ADD CONSTRAINT PK_GRUPO PRIMARY KEY (CODIGO);
ALTER TABLE GRUPO_CUSTO ADD CONSTRAINT PK_GRUPO_CUSTO PRIMARY KEY (COD_GRUPO_CUSTO);
ALTER TABLE GRUPO_ESPECIALIDADES ADD CONSTRAINT PK_GRUPO_ESPECIALIDADES PRIMARY KEY (COD_GRUPO);
ALTER TABLE GRUPO_ESPECIALIDADES_DETALHE ADD CONSTRAINT PK_GRUPO_ESPECIALIDADES_DETALHE PRIMARY KEY (COD_GRUPO_DETALHE);
ALTER TABLE GRUPO_PROCESSO ADD CONSTRAINT PK_GRUPO_PROCESSO PRIMARY KEY (COD_GRUPO_PROCESSO);
ALTER TABLE GUIAS_DA_WEB ADD CONSTRAINT PK_GUIAS_DA_WEB PRIMARY KEY (CODIGO);
ALTER TABLE GUIAS_FORMA_GERAR ADD CONSTRAINT PK_GUIAS_FORMA_GERAR PRIMARY KEY (COD_GUIAS_FORMA_GERAR);
ALTER TABLE HISTORICO_ASSOCIADO_EMPRESA ADD CONSTRAINT PK_HISTORICO_ASSOCIADO_EMPRESA_ PRIMARY KEY (CODIGO);
ALTER TABLE HOMOLOGACAO ADD CONSTRAINT PK_HOMOLOGACAO PRIMARY KEY (CODIGO);
ALTER TABLE HOMOLOGACAO_WEB ADD CONSTRAINT PK_HOMOLOGACAO_WEB PRIMARY KEY (COD_HOMOLOGACAO_WEB);
ALTER TABLE HOMOLOGACAO_WEB_HORARIO ADD CONSTRAINT PK_HOMOLOGACAO_WEB_HORARIO PRIMARY KEY (COD_HOMOLOGACAO_WEB_HORARIO);
ALTER TABLE HOMOLOGADOR ADD CONSTRAINT PK_HOMOLOGADOR PRIMARY KEY (COD_HOMOLOGADOR);
ALTER TABLE HORARIOS_CONFIG_AGEND_SERVICO ADD CONSTRAINT PK_HORARIOS_CONFIG_AGEND_SERVIC PRIMARY KEY (CODIGO);
ALTER TABLE HORARIO_AGENDAMENTO_SERVICO ADD CONSTRAINT PK_HORARIO_AGENDAMENTO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE IMPORTACAO_DADOS ADD CONSTRAINT PK_IMPORTACAO_DADOS PRIMARY KEY (COD_IMPORTACAO_DADOS);
ALTER TABLE IMPRESSORAS ADD CONSTRAINT PK_IMPRESSORAS PRIMARY KEY (CODIGO);
ALTER TABLE ITEMS_RESCISAO ADD CONSTRAINT PK_ITEMS_RESCISAO PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_CHECK_LIST ADD CONSTRAINT PK_ITENS_CHECK_LIST PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_CHECK_LIST_HOMOLOGACAO ADD CONSTRAINT PK_ITENS_CHECK_LIST_HOMOLOGACAO PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_CONTAS ADD CONSTRAINT PK_ITENS_CONTAS PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_EXAME ADD CONSTRAINT PK_ITENS_EXAME PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_SERVICO ADD CONSTRAINT PK_ITENS_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE ITENS_SERVICO_GENERICO ADD CONSTRAINT PK_ITENS_SERVICO_GENERICO PRIMARY KEY (CODIGO);
ALTER TABLE JUSTIFICATIVA_MUDANCA_STATUS ADD CONSTRAINT PK_JUSTIFICATIVA_MUDANCA_STATUS PRIMARY KEY (COD_JUSTIFICATIVA_MUDANCA);
ALTER TABLE LANCAMENTOS_SERVICOS ADD CONSTRAINT PK_LANCAMENTOS_SERVICOS PRIMARY KEY (CODIGO);
ALTER TABLE LANCAMENTOS_SERVICOS_GENERICO ADD CONSTRAINT PK_LANCAMENTOS_SERVICOS_GENERIC PRIMARY KEY (CODIGO);
ALTER TABLE LICENCA ADD CONSTRAINT PK_LICENCA PRIMARY KEY (COD_LICENCA);
ALTER TABLE LOCAL_EMISSAO_GUIAS ADD CONSTRAINT PK_LOCAL_EMISSAO_GUIAS PRIMARY KEY (COD_LOCAL_EMISSAO);
ALTER TABLE LOCAL_PAGAMENTO ADD CONSTRAINT PK_LOCAL_PAGAMENTO PRIMARY KEY (COD_LOCAL_PAGAMENTO);
ALTER TABLE LOG_ERROS ADD CONSTRAINT PK_LOG_ERROS PRIMARY KEY (COD_LOG_ERRO);
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT PK_MARCAR_HOMOLOGACAO PRIMARY KEY (CODIGO);
ALTER TABLE MARCAR_HOMOLOGACAO_HORARIO ADD CONSTRAINT PK_MARCAR_HOMOLOGACAO_HORARIO PRIMARY KEY (CODIGO);
ALTER TABLE MENSAGEM_NA_REDE ADD CONSTRAINT PK_MENSAGEM_NA_REDE PRIMARY KEY (CODIGO);
ALTER TABLE MENSALIDADE ADD CONSTRAINT PK_MENSALIDADE PRIMARY KEY (CODIGO);
ALTER TABLE MODELO_DECLARACAO ADD CONSTRAINT PK_MODELO_DECLARACAO PRIMARY KEY (COD_MODELO_DECLARACAO);
ALTER TABLE MOTIVO_DEVOLUCAO ADD CONSTRAINT PK_MOTIVO_DEVOLUCAO PRIMARY KEY (COD_MOTIVO);
ALTER TABLE MOVIMENTACAO_CHEQUE ADD CONSTRAINT PK_MOVIMENTACAO_CHEQUE PRIMARY KEY (CODIGO);
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT PK_MOVIMENTO_CAIXA PRIMARY KEY (COD_MOVIMENTO_CAIXA);
ALTER TABLE MOVIMENTO_CAIXA_GRUPO ADD CONSTRAINT PK_MOVIMENTO_CAIXA_GRUPO PRIMARY KEY (CODIGO);
ALTER TABLE OFICIOS ADD CONSTRAINT PK_OFICIOS PRIMARY KEY (COD_OFICIO);
ALTER TABLE OFICIOS_DETALHE ADD CONSTRAINT PK_OFICIOS_DETALHE PRIMARY KEY (COD_OFICIO_DETALHE);
ALTER TABLE OPOSICAO ADD CONSTRAINT PK_OPOSICAO PRIMARY KEY (CODIGO);
ALTER TABLE OPOSICAO_ASSOCIATIVA ADD CONSTRAINT PK_OPOSICAO_ASSOCIATIVA PRIMARY KEY (CODIGO);
ALTER TABLE PADRAO_BANCARIO ADD CONSTRAINT PK_PADRAO_BANCARIO PRIMARY KEY (COD_PADRAO_BANCARIO);
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT PK_PAGAMENTO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE PAGAMENTO_SERVICO_GENERICO ADD CONSTRAINT PK_PAGAMENTO_SERVICO_GENERICO PRIMARY KEY (CODIGO);
ALTER TABLE PARENTESCO ADD CONSTRAINT PK_PARENTESCO PRIMARY KEY (CODIGO);
ALTER TABLE PEDIDOS_PROCESSO ADD CONSTRAINT PK_PEDIDOS_PROCESSO PRIMARY KEY (COD_PEDIDO_PROCESSO);
ALTER TABLE PERIODICIDADE ADD CONSTRAINT PK_PERIODICIDADE PRIMARY KEY (CODIGO);
ALTER TABLE PLANO_BASICO ADD CONSTRAINT PK_PLANO_BASICO PRIMARY KEY (CODIGO);
ALTER TABLE PLANO_CONTA ADD CONSTRAINT PK_PLANO_CONTA PRIMARY KEY (COD_PLANO_CONTA);
ALTER TABLE PRE_CADASTRO ADD CONSTRAINT PK_PRE_CADASTRO PRIMARY KEY (COD_PRE_CADASTRO);
ALTER TABLE PRE_CADASTRO_HISTORICO ADD CONSTRAINT PK_PRE_CADASTRO_HISTORICO PRIMARY KEY (COD_PRE_CADASTRO_HISTORICO);
ALTER TABLE PROCESSAMENTO ADD CONSTRAINT PK_PROCESSAMENTO PRIMARY KEY (CODIGO);
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT PK_PROCESSAMENTO_DETALHES PRIMARY KEY (COD_PROC_DETALHE);
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT PK_PROCESSOS_JURIDICOS PRIMARY KEY (NUM_PROCESSO);
ALTER TABLE PROCESSO_JURIDICO_CONTRATO ADD CONSTRAINT PK_PROCESSO_JURIDICO_CONTRATO PRIMARY KEY (COD_PROC_JUR_CONTRATO);
ALTER TABLE PROCESSO_JURIDICO_RECLAMADO ADD CONSTRAINT PK_PROCESSO_JURIDICO_RECLAMADO PRIMARY KEY (CODIGO);
ALTER TABLE PROGRAMAS ADD CONSTRAINT PK_PROGRAMAS PRIMARY KEY (CODIGO);
ALTER TABLE RAIS ADD CONSTRAINT PK_RAIS PRIMARY KEY (COD_RAIS);
ALTER TABLE RB_FIELD ADD PRIMARY KEY (TABLE_NAME, FIELD_NAME);
ALTER TABLE RB_FOLDER ADD PRIMARY KEY (NAME, PARENT_ID);
ALTER TABLE RB_ITEM ADD PRIMARY KEY (FOLDER_ID, ITEM_TYPE, NAME, MODIFIED);
ALTER TABLE RB_JOIN ADD PRIMARY KEY (TABLE_NAME1, TABLE_NAME2);
ALTER TABLE RECADOS ADD CONSTRAINT PK_RECADOS PRIMARY KEY (COD_RECADO, COD_FILIAL);
ALTER TABLE RECIBO_AVULSO ADD CONSTRAINT PK_RECIBO_AVULSO_1 PRIMARY KEY (CODIGO);
ALTER TABLE REGISTRO ADD CONSTRAINT PK_REGISTRO PRIMARY KEY (CNPJ);
ALTER TABLE REGRAS_ELEICAO ADD CONSTRAINT PK_REGRAS_ELEICAO PRIMARY KEY (COD_REGRAS_ELEICAO);
ALTER TABLE RELATORIO_COBRANCA ADD CONSTRAINT PK_RELATORIO_COBRANCA PRIMARY KEY (CODIGO);
ALTER TABLE RELATORIO_SISTEMA ADD CONSTRAINT PK_RELATORIO_SISTEMA PRIMARY KEY (COD_RELATORIO_SISTEMA);
ALTER TABLE REMESSA_BANCO ADD CONSTRAINT PK_REMESSA_BANCO PRIMARY KEY (COD_REMESSA_BANCO);
ALTER TABLE REMESSA_BANCO_DETALHE ADD CONSTRAINT PK_REMESSA_BANCO_DETALHE PRIMARY KEY (CODIGO);
ALTER TABLE REPIS ADD CONSTRAINT PK_REPIS PRIMARY KEY (CODIGO);
ALTER TABLE RESUMO_PROCESSAMENTO_RETORNO ADD CONSTRAINT PK_RESUMO_PROCESSAMENTO_RETORNO PRIMARY KEY (CODIGO);
ALTER TABLE RETORNO_FEBRABAN ADD CONSTRAINT PK_RETORNO_FEBRABAN PRIMARY KEY (COD_LANCAMENTO);
ALTER TABLE RPA ADD CONSTRAINT PK_RPA PRIMARY KEY (COD_RPA, COD_FILIAL);
ALTER TABLE RPA_ITENS ADD CONSTRAINT PK_RPA_ITENS PRIMARY KEY (COD_RPA_ITENS, COD_RPA, COD_FILIAL_RPA);
ALTER TABLE SALARIOS ADD CONSTRAINT PK_SALARIOS PRIMARY KEY (CODIGO);
ALTER TABLE SALARIO_FAMILIA ADD CONSTRAINT PK_SALARIO_FAMILIA PRIMARY KEY (CODIGO);
ALTER TABLE SCRIPT_PROCESSADO ADD CONSTRAINT PK_SCRIPT_PROCESSADO PRIMARY KEY (COD_SCRIPT_PROCESSADO);
ALTER TABLE SEGMENTOS ADD CONSTRAINT PK_SEGMENTOS PRIMARY KEY (COD_SEGMENTO);
ALTER TABLE SEGMENTOS_CNAE ADD CONSTRAINT PK_SEGMENTOS_CNAE PRIMARY KEY (CODIGO);
ALTER TABLE SEGURO_DESEMPREGO ADD CONSTRAINT PK_SEGURO_DESEMPREGO PRIMARY KEY (CODIGO);
ALTER TABLE SERVICOS_CONV_CONCORRENTE ADD CONSTRAINT PK_SERVICOS_CONV_CONCORRENTE PRIMARY KEY (CODIGO);
ALTER TABLE SINDICAL ADD CONSTRAINT PK_SINDICAL PRIMARY KEY (CODIGO);
ALTER TABLE SINDICAL_CONTRIBUINTES ADD CONSTRAINT PK_SINDICAL_CONTRIBUINTES PRIMARY KEY (COD_SINDICAL_CONTRIBUINTES);
ALTER TABLE SITUACAO ADD CONSTRAINT PK_SITUACAO PRIMARY KEY (CODIGO);
ALTER TABLE SOCIAL ADD CONSTRAINT PK_SOCIAL PRIMARY KEY (CODIGO);
ALTER TABLE SOCIAL_ASSOCIADOS ADD CONSTRAINT PK_SOCIAL_ASSOCIADOS PRIMARY KEY (CODIGO);
ALTER TABLE STATUS_ATENDIMENTO ADD CONSTRAINT PK_STATUS_ATENDIMENTO PRIMARY KEY (COD_STATUS_ATENDIMENTO);
ALTER TABLE STATUS_CHEQUE ADD CONSTRAINT PK_STATUS_CHEQUE PRIMARY KEY (COD_STATUS_CHEQUE);
ALTER TABLE STATUS_CONTAS ADD CONSTRAINT PK_STATUS_CONTAS PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_DEPENDENTE ADD CONSTRAINT PK_STATUS_DEPENDENTE PRIMARY KEY (COD_STATUS_DEPENDENTE);
ALTER TABLE STATUS_ENTIDADE_EVENTO ADD CONSTRAINT PK_STATUS_ENTIDADE_EVENTO PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_FORNECEDOR ADD CONSTRAINT PK_STATUS_FORNECEDOR PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_HOMOLOGADOR ADD CONSTRAINT PK_STATUS_HOMOLOGADOR PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_INTEGRANTES_ENTID ADD CONSTRAINT PK_STATUS_INTEGRANTES_ENTID PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_MANDATO ADD CONSTRAINT PK_STATUS_MANDATO PRIMARY KEY (COD_STATUS);
ALTER TABLE STATUS_MARCAR_HOMOLOGACAO ADD CONSTRAINT PK_STATUS_MARCAR_HOMOLOGACAO PRIMARY KEY (CODIGO);
ALTER TABLE STATUS_REQUERIMENTO ADD CONSTRAINT PK_STATUS_REQUERIMENTO PRIMARY KEY (COD_STATUS_REQUERIMENTO);
ALTER TABLE TABELAS_OTIMIZADAS ADD CONSTRAINT PK_TABELAS_OTIMIZADAS PRIMARY KEY (CODIGO);
ALTER TABLE TABELAS_RELACIONADAS ADD CONSTRAINT PK_TABELAS_RELACIONADAS PRIMARY KEY (COD_TABELAS_RELACIONADAS);
ALTER TABLE TABELA_INSS ADD CONSTRAINT PK_TABELA_INSS PRIMARY KEY (CODIGO);
ALTER TABLE TABELA_IRRF ADD CONSTRAINT PK_TABELA_IRRF PRIMARY KEY (CODIGO);
ALTER TABLE TAGS ADD CONSTRAINT PK_TAGS PRIMARY KEY (COD_TAGS);
ALTER TABLE TAGS_ITEM ADD CONSTRAINT PK_TAGS_ITEM PRIMARY KEY (COD_TAG_ITEM);
ALTER TABLE TELEFONE ADD CONSTRAINT PK_TELEFONE PRIMARY KEY (COD_TELEFONE);
ALTER TABLE TIPOPAGAMENTO ADD CONSTRAINT PK_TIPOPAGAMENTO PRIMARY KEY (CODIGO);
ALTER TABLE TIPOSOCIO ADD CONSTRAINT PK_TIPOSOCIO PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_AFASTAMENTO ADD CONSTRAINT PK_TIPO_AFASTAMENTO PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_ATENDIMENTO ADD CONSTRAINT PK_TIPO_ATENDIMENTO PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_COBRANCA ADD CONSTRAINT PK_TIPO_COBRANCA PRIMARY KEY (COD_TIPO_COBRANCA);
ALTER TABLE TIPO_COBRANCA_ONDE_USAR ADD CONSTRAINT PK_TIPO_COBRANCA_ONDE_USAR PRIMARY KEY (COD_TIPO_COBRANCA_ONDE);
ALTER TABLE TIPO_ERRO_PROCESSAMENTO_RETORNO ADD CONSTRAINT PK_TIPO_ERRO_PROCESSAMENTO_RETO PRIMARY KEY (COD_TIPO_ERRO_PROCESSAMENTO);
ALTER TABLE TIPO_EXAME ADD CONSTRAINT PK_TIPO_EXAME PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_GUIA ADD CONSTRAINT PK_TIPO_GUIA PRIMARY KEY (COD_TIPO_GUIA);
ALTER TABLE TIPO_MOVIMENTO_CHEQUE ADD CONSTRAINT PK_TIPO_MOVIMENTO_CHEQUE PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_PROCESSO ADD CONSTRAINT PK_TIPO_PROCESSO PRIMARY KEY (COD_TIPO_PROCESSO);
ALTER TABLE TIPO_SERVICO ADD CONSTRAINT PK_TIPO_SERVICO PRIMARY KEY (CODIGO);
ALTER TABLE TIPO_TELEFONE ADD CONSTRAINT PK_TIPO_TELEFONE PRIMARY KEY (COD_TIPO_TELEFONE);
ALTER TABLE UF ADD CONSTRAINT PK_UF PRIMARY KEY (COD_UF);
ALTER TABLE USUARIO ADD CONSTRAINT PK_USUARIO PRIMARY KEY (CODIGO);
ALTER TABLE VALOR_CONVITE ADD CONSTRAINT PK_VALOR_CONVITE PRIMARY KEY (CODIGO);
ALTER TABLE VALOR_ITENS_SERVICO ADD CONSTRAINT PK_VALOR_ITENS_SERVICO PRIMARY KEY (CODIGO, CONVENIO_TIPO_SERVICO);
ALTER TABLE VARA ADD CONSTRAINT PK_VARA PRIMARY KEY (COD_VARA);
ALTER TABLE VERSAO ADD CONSTRAINT PK_VERSAO PRIMARY KEY (CODIGO);
ALTER TABLE VOTO_ELETRONICO ADD CONSTRAINT PK_VOTO_ELETRONICO PRIMARY KEY (COD_VOTO);
ALTER TABLE WEB_SERVICE_ERROS ADD PRIMARY KEY (ID);
ALTER TABLE WHATS_CONFIG ADD CONSTRAINT PK_WHATS_CONFIG PRIMARY KEY (ID);
ALTER TABLE WHATS_ENVIO_TELEFONE ADD CONSTRAINT PK_WHATS_ENVIO_TELEFONE PRIMARY KEY (ID);
ALTER TABLE WHATS_FILA_ENVIO ADD PRIMARY KEY (ID);
ALTER TABLE WHATS_LOG ADD CONSTRAINT PK_WHATS_LOG PRIMARY KEY (ID);


/******************************************************************************/
/***                              Foreign keys                              ***/
/******************************************************************************/

ALTER TABLE ACORDO ADD CONSTRAINT FK_ACORDO_1 FOREIGN KEY (COD_COBRANCA) REFERENCES COBRANCA (COD_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE ACORDO ADD CONSTRAINT FK_ACORDO_2 FOREIGN KEY (COD_USUARIO_CAD) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ACORDO_ARRECADACAO ADD CONSTRAINT FK_ACORDO_ARRECADACAO_1 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ACORDO_ARRECADACAO ADD CONSTRAINT FK_ACORDO_ARRECADACAO_2 FOREIGN KEY (COD_ACORDO) REFERENCES ACORDO (COD_ACORDO) ON UPDATE CASCADE;
ALTER TABLE ACORDO_DETALHE ADD CONSTRAINT FK_ACORDO_DETALHE_1 FOREIGN KEY (COD_ACORDO) REFERENCES ACORDO (COD_ACORDO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ACORDO_DETALHE ADD CONSTRAINT FK_ACORDO_DETALHE_2 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE AGENDAMENTO_SERVICO ADD CONSTRAINT FK_AGENDAMENTO_SERVICO_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAMENTO_SERVICO ADD CONSTRAINT FK_AGENDAMENTO_SERVICO_COD_ASSO FOREIGN KEY (COD_ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAMENTO_SERVICO ADD CONSTRAINT FK_AGENDAMENTO_SERVICO_COD_SERV FOREIGN KEY (COD_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_1 FOREIGN KEY (COD_HOMOLOGACAO) REFERENCES HOMOLOGACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_2 FOREIGN KEY (COD_HOMOLOGADOR) REFERENCES HOMOLOGADOR (COD_HOMOLOGADOR) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_3 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB_CONFIRM ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_CONFIRM_1 FOREIGN KEY (CODIGO_AGENDAM_WEB) REFERENCES AGENDAM_HOMO_WEB (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB_CONFIRM ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_CONFIRM_2 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB_CONFIRM ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_CONFIRM_3 FOREIGN KEY (COD_EVENTO) REFERENCES AGENDAM_HOMO_WEB_EVENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDAM_HOMO_WEB_CONFIRM ADD CONSTRAINT FK_AGENDAM_HOMO_WEB_CONFIRM_4 FOREIGN KEY (COD_HOMOLOGADOR) REFERENCES HOMOLOGADOR (COD_HOMOLOGADOR) ON UPDATE CASCADE;
ALTER TABLE AGENDA_DE_HORARIOS_LIBERADO ADD CONSTRAINT FK_AGENDA_DE_HORARIOS_LIBERADO_ FOREIGN KEY (CONVENIO_TIPO_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE AGENDA_TELEFONICA ADD CONSTRAINT FK_AGENDA_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_USUARIO;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_10 FOREIGN KEY (COD_TIPO_COBRANCA) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_11 FOREIGN KEY (COD_ESTORNO_DETALHE) REFERENCES ESTORNO_DETALHE (COD_ESTORNO_DETALHE) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_12 FOREIGN KEY (COD_ARRECADACAO_COMP_VALOR) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_13 FOREIGN KEY (COD_TIPO_ERRO_PROCESSAMENTO) REFERENCES TIPO_ERRO_PROCESSAMENTO_RETORNO (COD_TIPO_ERRO_PROCESSAMENTO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_14 FOREIGN KEY (COD_FATURAMENTO) REFERENCES FATURAMENTO (COD_FATURAMENTO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_15 FOREIGN KEY (COD_STATUS) REFERENCES ARRECADACAO_STATUS (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_16 FOREIGN KEY (COD_CONTA_BANCARIA_MOVIMENTO) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_17 FOREIGN KEY (COD_CENTRO_CUSTO) REFERENCES CENTRO_CUSTO (COD_CENTRO_CUSTO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_18 FOREIGN KEY (COD_USUARIO_IMPRESSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_19 FOREIGN KEY (COD_COBRANCA_DETALHE) REFERENCES COBRANCA_DETALHE (COD_COBRANCA_DETALHE) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_2 FOREIGN KEY (COD_PADRAO_BANCARIO) REFERENCES PADRAO_BANCARIO (COD_PADRAO_BANCARIO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_20 FOREIGN KEY (COD_REMESSA_BANCO) REFERENCES REMESSA_BANCO (COD_REMESSA_BANCO) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_21 FOREIGN KEY (COD_ACORDO) REFERENCES ACORDO (COD_ACORDO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_3 FOREIGN KEY (COD_FORMA_ARRECADACAO) REFERENCES FORMA_ARRECADACAO (COD_FORMA_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_4 FOREIGN KEY (COD_LOCAL_EMISSAO) REFERENCES LOCAL_EMISSAO_GUIAS (COD_LOCAL_EMISSAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_5 FOREIGN KEY (COD_USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_6 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_7 FOREIGN KEY (COD_USUARIO_PAGAMENTO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_8 FOREIGN KEY (COD_FILIAL_PAGAMENTO) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO ADD CONSTRAINT FK_ARRECADACAO_9 FOREIGN KEY (COD_CAIXA_MOVIMENTACAO) REFERENCES MOVIMENTO_CAIXA (COD_MOVIMENTO_CAIXA) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_ACORDO ADD CONSTRAINT FK_ARRECADACAO_ACORDO_1 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_ACORDO ADD CONSTRAINT FK_ARRECADACAO_ACORDO_2 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_DESCONTO ADD CONSTRAINT FK_ARRECADACAO_DESCONTO_1 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_DETALHE ADD CONSTRAINT FK_ARRECADACAO_DETALHE_1 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_DETALHE ADD CONSTRAINT FK_ARRECADACAO_DETALHE_2 FOREIGN KEY (COD_ARRECADACAO_VINCULADO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_HISTORICO ADD CONSTRAINT FK_ARRECADACAO_HISTORICO_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_HISTORICO ADD CONSTRAINT FK_ARRECADACAO_HISTORICO_2 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_HISTORICO ADD CONSTRAINT FK_ARRECADACAO_HISTORICO_3 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ARRECADACAO_HISTORICO ADD CONSTRAINT FK_ARRECADACAO_HISTORICO_4 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_FILIAL_BAIXA FOREIGN KEY (FILIAL_BAIXA) REFERENCES FILIAL (COD_FILIAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_LOCAL_EMISSAO FOREIGN KEY (COD_LOCAL_EMISSAO) REFERENCES LOCAL_EMISSAO_GUIAS (COD_LOCAL_EMISSAO) ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_PROC_DETALHE FOREIGN KEY (COD_PROC_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_ASSISTENCIAL_USUARIO_EMISSAO FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSISTENCIAL ADD CONSTRAINT FK_COD_FORMA_PAGAMENTO3 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_1 FOREIGN KEY (COD_ASSOCIADO_GRUPO_FATURA) REFERENCES ASSOCIADO_GRUPO_FATURAMENTO (COD_ASSOCIADO_GRUPO_FATURA) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_2 FOREIGN KEY (STATUS) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_CARTEIRINHA FOREIGN KEY (CARTEIRINHA) REFERENCES CARTEIRINHA (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE
  USING INDEX FK_ASSOCIADO2;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_ESTADOCIVIL FOREIGN KEY (ESTADOCIVIL) REFERENCES ESTADOCIVIL (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ASSOCIADO3;
ALTER TABLE ASSOCIADO ADD CONSTRAINT FK_ASSOCIADO_TIPO FOREIGN KEY (TIPOASSOCIADO) REFERENCES TIPOSOCIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ASSOCIADO1;
ALTER TABLE ASSOCIADO_GRUPO ADD CONSTRAINT FK_ASSOCIADO_GRUPO_COD_ASSOCIAD FOREIGN KEY (COD_ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_GRUPO ADD CONSTRAINT FK_ASSOCIADO_GRUPO_COD_GRUPO FOREIGN KEY (COD_GRUPO) REFERENCES GRUPO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_GRUPO_FATURAMENTO ADD CONSTRAINT FK_ASSOCIADO_GRUPO_FATURAMENTO_ FOREIGN KEY (COD_TIPO_COBRANCA) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_MUDANCA ADD CONSTRAINT FK_ASS_MUDANCA_ANTIGO FOREIGN KEY (ANTIGO) REFERENCES SITUACAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_MUDANCA ADD CONSTRAINT FK_ASS_MUDANCA_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_MUDANCA ADD CONSTRAINT FK_ASS_MUDANCA_NOVO FOREIGN KEY (NOVO) REFERENCES SITUACAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSOCIADO_MUDANCA ADD CONSTRAINT FK_ASS_MUDANCA_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ASSOCIATIVA ADD CONSTRAINT FK_ASSOCIATIVA_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIATIVA ADD CONSTRAINT FK_ASSOCIATIVA_FORMA_PGTO FOREIGN KEY (COD_FORMAPAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ASSOCIATIVA ADD CONSTRAINT FK_ASSOCIATIVA_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ASSOCIADO ADD CONSTRAINT FK_ATENDIMENTO_ASS_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ASSOCIADO ADD CONSTRAINT FK_AT_ASS_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_ASSOCIADO2;
ALTER TABLE ATENDIMENTO_ASSOCIADO ADD CONSTRAINT FK_AT_ASS_TIPO FOREIGN KEY (TIPO_ATENDIMENTO) REFERENCES TIPO_ATENDIMENTO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_ASSOCIADO3;
ALTER TABLE ATENDIMENTO_ASSOCIADO ADD CONSTRAINT FK_AT_ASS_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_ASSOCIADO1;
ALTER TABLE ATENDIMENTO_COBRANCA ADD CONSTRAINT FK_ATENDIMENTO_COBRANCA FOREIGN KEY (COBRANCA) REFERENCES COBRANCA (COD_COBRANCA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_COBRANCA ADD CONSTRAINT FK_ATENDIMENTO_COBRANCA_STATUS FOREIGN KEY (STATUS) REFERENCES COBRANCA_STATUS (COD_STATUS);
ALTER TABLE ATENDIMENTO_COBRANCA ADD CONSTRAINT FK_ATENDIMENTO_COBRANCA_TIPO FOREIGN KEY (TIPO_ATENDIMENTO) REFERENCES TIPO_ATENDIMENTO (CODIGO);
ALTER TABLE ATENDIMENTO_COBRANCA ADD CONSTRAINT FK_ATENDIMENTO_COBRANCA_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO);
ALTER TABLE ATENDIMENTO_CONTABILIDADE ADD CONSTRAINT FK_ATENDIMENTO_CTB_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_CONTABILIDADE ADD CONSTRAINT FK_AT_CTB_CONTADOR FOREIGN KEY (CONTABILIDADE) REFERENCES CONTABILIDADE (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_CONTADOR1;
ALTER TABLE ATENDIMENTO_CONTABILIDADE ADD CONSTRAINT FK_AT_CTB_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_CONTADOR3;
ALTER TABLE ATENDIMENTO_EMPRESA ADD CONSTRAINT FK_ATENDIMENTO_EMP_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_EMPRESA ADD CONSTRAINT FK_AT_EMP_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_EMPRESA1;
ALTER TABLE ATENDIMENTO_EMPRESA ADD CONSTRAINT FK_AT_EMP_TIPO FOREIGN KEY (TIPO_ATENDIMENTO) REFERENCES TIPO_ATENDIMENTO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_EMPRESA2;
ALTER TABLE ATENDIMENTO_EMPRESA ADD CONSTRAINT FK_AT_EMP_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_ATENDIMENTO_EMPRESA3;
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT FK_ATENDIMENTO_ENTIDADE_SINDIC1 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT FK_ATENDIMENTO_ENTIDADE_SINDIC2 FOREIGN KEY (COD_TIPO_ATENDIMENTO) REFERENCES TIPO_ATENDIMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT FK_ATENDIMENTO_ENTIDADE_SINDIC3 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT FK_ATENDIMENTO_ENTIDADE_SINDIC4 FOREIGN KEY (COD_STATUS_ATENDIMENTO) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_ENTIDADE_SINDICAL ADD CONSTRAINT FK_ATENDIMENTO_ENTIDADE_SINDICA FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_FORNECEDOR ADD CONSTRAINT FK_ATENDIMENTO_FORNECEDOR_STATU FOREIGN KEY (COD_STATUS) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_FORNECEDOR ADD CONSTRAINT FK_ATENDIMENTO_FORNECEDOR_TIPO FOREIGN KEY (TIPO_ATENDIMENTO) REFERENCES TIPO_ATENDIMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_FORNECEDOR ADD CONSTRAINT FK_ATENDIMENTO_FORNECEDOR_USU FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_JURIDICO ADD CONSTRAINT FK_ATENDIMENTO_JURIDICO_1 FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ATENDIMENTO_JURIDICO ADD CONSTRAINT FK_ATENDIMENTO_JURIDICO_2 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_ATENDIMENTO (COD_STATUS_ATENDIMENTO) ON UPDATE CASCADE;
ALTER TABLE BACKUP ADD CONSTRAINT FK_BACKUP_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE BASE_TERRITORIAL_CIDADES ADD CONSTRAINT FK_BASE_TERRITORIAL_CIDADES_1 FOREIGN KEY (COD_BASE) REFERENCES BASE_TERRITORIAL (COD_BASE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE BORDERO ADD CONSTRAINT FK_BORDERO_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE BORDERO_ITENS ADD CONSTRAINT FK_BORDERO_ITENS_BORDERO FOREIGN KEY (COD_BORDERO) REFERENCES BORDERO (COD_BORDERO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE BORDERO_ITENS ADD CONSTRAINT FK_BORDERO_ITENS_FORMA_PGTO FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE BORDERO_ITENS ADD CONSTRAINT FK_BORDERO_ITENS_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE ADD CONSTRAINT FK_CADASTRO_CHEQUE_1 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE ADD CONSTRAINT FK_CADASTRO_CHEQUE_2 FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE ADD CONSTRAINT FK_CADASTRO_CHEQUE_FILIAL FOREIGN KEY (FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE ADD CONSTRAINT FK_COD_CHEQUE_MOVIMENTACAO FOREIGN KEY (COD_CHEQUE_MOVIMENTACAO) REFERENCES CHEQUE_MOVIMENTACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE_EMITIDO ADD CONSTRAINT FK_CADASTRO_CHEQUE_EMITIDO_1 FOREIGN KEY (COD_CONTA_PAGAR) REFERENCES CONTAS_PAGAR (COD_CONTA_PAGAR) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE_EMITIDO ADD CONSTRAINT FK_CADASTRO_CHEQUE_EMITIDO_2 FOREIGN KEY (COD_CONTA) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE CADASTRO_CHEQUE_EMITIDO ADD CONSTRAINT FK_CADASTRO_CHEQUE_EMITIDO_3 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_CHEQUE (COD_STATUS_CHEQUE) ON UPDATE CASCADE;
ALTER TABLE CAIXA_AJUSTE ADD CONSTRAINT FK_CAIXA_AJUSTE_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CAIXA_AJUSTE ADD CONSTRAINT FK_CAIXA_AJUSTE_2 FOREIGN KEY (COD_CONTA_BANCARIA_MOVIMENTO) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE CAIXA_AJUSTE ADD CONSTRAINT FK_CAIXA_AJUSTE_3 FOREIGN KEY (COD_PLANO_CONTA) REFERENCES PLANO_CONTA (COD_PLANO_CONTA) ON UPDATE CASCADE;
ALTER TABLE CAIXA_AJUSTE ADD CONSTRAINT FK_CAIXA_AJUSTE_4 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CAIXA_ESTORNO ADD CONSTRAINT FK_CAIXA_ESTORNO_1 FOREIGN KEY (COD_PLANO_CONTA) REFERENCES PLANO_CONTA (COD_PLANO_CONTA) ON UPDATE CASCADE;
ALTER TABLE CAIXA_ESTORNO ADD CONSTRAINT FK_CAIXA_ESTORNO_2 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CAIXA_ESTORNO ADD CONSTRAINT FK_CAIXA_ESTORNO_3 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE CAIXA_MOVIMENTACAO ADD CONSTRAINT FK_CAIXA_MOVIMENTACAO_EVENTO FOREIGN KEY (EVENTO) REFERENCES CAIXA_EVENTO (COD_CAIXA_EVENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CAIXA_MOVIMENTACAO ADD CONSTRAINT FK_CAIXA_MOVIMENTACAO_FILIAL FOREIGN KEY (FILIAL) REFERENCES FILIAL (COD_FILIAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CAIXA_MOVIMENTACAO ADD CONSTRAINT FK_CAIXA_MOVIMENTACAO_FORMA_PGT FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CAIXA_MOVIMENTACAO ADD CONSTRAINT FK_CAIXA_MOVIMENTACAO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CAIXA_SAIDA ADD CONSTRAINT FK_CAIXA_SAIDA_FILIAL FOREIGN KEY (FILIAL) REFERENCES FILIAL (COD_FILIAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CALCULO_RESCISAO ADD CONSTRAINT FK_CALCULO_CONTABILIDADE FOREIGN KEY (CONTABILIDADE) REFERENCES CONTABILIDADE (CNPJ) ON UPDATE CASCADE
  USING INDEX FK_CALCULO_RESCISAO3;
ALTER TABLE CALCULO_RESCISAO ADD CONSTRAINT FK_CALCULO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE
  USING INDEX FK_CALCULO_RESCISAO4;
ALTER TABLE CALCULO_RESCISAO ADD CONSTRAINT FK_CALCULO_TIPO FOREIGN KEY (TIPO_RESCISAO) REFERENCES TIPO_AFASTAMENTO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_CALCULO_RESCISAO2;
ALTER TABLE CALCULO_RESCISAO ADD CONSTRAINT FK_CALCULO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_CALCULO_RESCISAO1;
ALTER TABLE CALCULO_RESCISAO_ITEMS ADD CONSTRAINT FK_CALCULO_RESCISAO FOREIGN KEY (RESCISAO) REFERENCES CALCULO_RESCISAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CALCULO_RESCISAO_ITEMS ADD CONSTRAINT FK_CALCULO_RESCISAO_ITEMS FOREIGN KEY (ITEM_RESCISAO) REFERENCES ITEMS_RESCISAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CENSO_BASE_TERRITORIAL ADD CONSTRAINT FK_CENSO_BASE_TERRITORIAL_1 FOREIGN KEY (COD_CENSO) REFERENCES CENSO (COD_CENSO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CHECK_LIST_HOMOLOGACAO ADD CONSTRAINT FK_CHECK_LIST_HOMOLOGADOR FOREIGN KEY (COD_HOMOLOGADOR) REFERENCES HOMOLOGADOR (COD_HOMOLOGADOR) ON UPDATE CASCADE;
ALTER TABLE CLIENTES_PROCESSOS ADD CONSTRAINT FK_CLIENTES_PROCESSOS_1 FOREIGN KEY (COD_ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CLIENTES_PROCESSOS ADD CONSTRAINT FK_CLIENTES_PROCESSOS_2 FOREIGN KEY (COD_COMERCIARIO) REFERENCES COMERCIARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE COBRANCA ADD CONSTRAINT FK_COBRANCA_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE COBRANCA ADD CONSTRAINT FK_COBRANCA_2 FOREIGN KEY (COD_STATUS) REFERENCES COBRANCA_STATUS (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE COBRANCA ADD CONSTRAINT FK_COBRANCA_3 FOREIGN KEY (COD_COBRANCA_FILA) REFERENCES COBRANCA_FILA (COD_COBRANCA_FILA) ON UPDATE CASCADE;
ALTER TABLE COBRANCA ADD CONSTRAINT FK_COBRANCA_4 FOREIGN KEY (COD_TIME_LINE_STATUS) REFERENCES COBRANCA_TIMELINE_STATUS (COD_TIMELINE_STATUS) ON UPDATE CASCADE;
ALTER TABLE COBRANCA_DETALHE ADD CONSTRAINT FK_COBRANCA_DETALHE_1 FOREIGN KEY (COD_COBRANCA) REFERENCES COBRANCA (COD_COBRANCA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE COBRANCA_DETALHE ADD CONSTRAINT FK_COBRANCA_DETALHE_2 FOREIGN KEY (COD_ARRECADACAO) REFERENCES ARRECADACAO (COD_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE COBRANCA_DETALHE ADD CONSTRAINT FK_COBRANCA_DETALHE_3 FOREIGN KEY (COD_TIPO_COBRANCA) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE COBRANCA_FILA ADD CONSTRAINT FK_COBRANCA_FILA_1 FOREIGN KEY (COD_USUARIO_CAD) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE COBRANCA_FILA ADD CONSTRAINT FK_COBRANCA_FILA_2 FOREIGN KEY (COD_USUARIO_COBRANCA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE COMERCIARIO ADD CONSTRAINT FK_COMERCIARIO_1 FOREIGN KEY (CARTEIRINHA) REFERENCES CARTEIRINHA (CODIGO) ON UPDATE CASCADE;
ALTER TABLE COMERCIARIO ADD CONSTRAINT FK_COMERCIARIO_2 FOREIGN KEY (COD_ASSOCIADO_GRUPO_FATURA) REFERENCES ASSOCIADO_GRUPO_FATURAMENTO (COD_ASSOCIADO_GRUPO_FATURA) ON UPDATE CASCADE;
ALTER TABLE COMERCIARIO ADD CONSTRAINT FK_COMERCIARIO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE;
ALTER TABLE COMERCIARIO ADD CONSTRAINT FK_COMERCIARIO_ESTADOCIVIL FOREIGN KEY (ESTADOCIVIL) REFERENCES ESTADOCIVIL (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT FK_COD_FORMA_PAGAMENTO4 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT FK_CONFEDERATIVA_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT FK_CONFEDERATIVA_PROC_DETALHE FOREIGN KEY (COD_PROC_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT FK_CONFED_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFEDERATIVA ADD CONSTRAINT FK_CONFED_USUARIO_EMISSAO FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO ADD CONSTRAINT FK_CONFIGURACAO_CHEQUE FOREIGN KEY (CHEQUE_PADRAO) REFERENCES ETIQUETAS_ENVELOPES (CODIGO) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO ADD CONSTRAINT FK_CONFIGURACAO_ETIQUETA FOREIGN KEY (ETIQUETA_PADRAO) REFERENCES ETIQUETAS_ENVELOPES (CODIGO) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_1 FOREIGN KEY (COD_TIPO_COBRANCA_MENSALIDADE) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_2 FOREIGN KEY (COD_TIPO_COBRANCA_AGRUPAMENTO) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_3 FOREIGN KEY (COD_STATUS_CARENCIA) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_4 FOREIGN KEY (COD_STATUS_PERMANENCIA) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_5 FOREIGN KEY (COD_STATUS_INATIVO) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_ASSOCIADO ADD CONSTRAINT FK_CONFIGURACAO_ASSOCIADO_6 FOREIGN KEY (COD_TIPO_COBRANCA_SOCIALEMPRESA) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_BACKUP_LISTA ADD CONSTRAINT FK_CONFIGURACAO_BACKUP_LISTA FOREIGN KEY (COD_CONF_BKP) REFERENCES CONFIGURACAO_BACKUP (COD_CONF_BKP) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONFIGURACAO_PLANO_BASICO ADD CONSTRAINT FK_CONF_PLANO_BASICO_FILIAL FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE CONFIG_AGENDAMENTO_SERVICO ADD CONSTRAINT FK_CONFIG_AGENDAMENTO_SERVICO_1 FOREIGN KEY (CONVENIO_TIPO_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONSULTAS ADD CONSTRAINT FK_CONSULTAS_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONSULTAS ADD CONSTRAINT FK_CONSULTAS_CONVENIO FOREIGN KEY (CONVENIO) REFERENCES CONVENIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONSULTAS ADD CONSTRAINT FK_CONSULTAS_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE;
ALTER TABLE CONSULTAS ADD CONSTRAINT FK_CONSULTAS_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONSULTAS ADD CONSTRAINT FK_CONSULTAS_USUARIO_EMISSA FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONSULTA_DADOS_CADASTRAIS ADD CONSTRAINT FK_CONSULTA_DADOS_CADASTRAIS_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTABILIDADE ADD CONSTRAINT FK_CONTABILIDADE_ENVIO_GUIAS FOREIGN KEY (ENVIO_GUIAS) REFERENCES GUIAS_FORMA_GERAR (COD_GUIAS_FORMA_GERAR) ON UPDATE CASCADE;
ALTER TABLE CONTABILIDADE ADD CONSTRAINT FK_CONTABILIDADE_STATUS FOREIGN KEY (COD_STATUS) REFERENCES EMPRESA_STATUS (COD_EMPRESA_STATUS) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_1 FOREIGN KEY (COD_CENTRO_CUSTO) REFERENCES CENTRO_CUSTO (COD_CENTRO_CUSTO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_2 FOREIGN KEY (COD_PLANO_CONTA) REFERENCES PLANO_CONTA (COD_PLANO_CONTA) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_3 FOREIGN KEY (COD_CONTA_BANCARIA) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_4 FOREIGN KEY (COD_MOVIMENTO_CAIXA) REFERENCES MOVIMENTO_CAIXA (COD_MOVIMENTO_CAIXA) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_6 FOREIGN KEY (COD_CONTA_BANCARIA_MOVIMENTO) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_DOC_TIPO FOREIGN KEY (DOCUMENTO_TIPO) REFERENCES DOCUMENTO_TIPO (COD_DOCUMENTO_TIPO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_FORMA_PAGAMENTO FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_FORNECEDOR FOREIGN KEY (COD_FORNECEDOR) REFERENCES FORNECEDOR (COD_FORNECEDOR) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_CONTAS (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_USUARIO_BAIXA FOREIGN KEY (COD_USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR ADD CONSTRAINT FK_CONTAS_PAGAR_USUARIO_CAD FOREIGN KEY (COD_USUARIO_CAD) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_RECEBER ADD CONSTRAINT FK_CR_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONTAS_RECEBER ADD CONSTRAINT FK_CR_USU_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTAS_RECEBER ADD CONSTRAINT FK_CR_USU_LANCAMENTO FOREIGN KEY (USUARIO_LANCAMENTO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTA_BANCARIA ADD CONSTRAINT FK_CONTA_BANCARIA_BANCO FOREIGN KEY (COD_BANCO) REFERENCES BANCO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONTROLE_STATUS ADD CONSTRAINT FK_CS_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENCAO_BASE ADD CONSTRAINT FK_CONV_BASE_BASE FOREIGN KEY (COD_BASE) REFERENCES BASE_TERRITORIAL (COD_BASE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENCAO_BASE ADD CONSTRAINT FK_CONV_BASE_CONVENCAO FOREIGN KEY (COD_CONVENCAO) REFERENCES CONVENCAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENCAO_SEGMENTO ADD CONSTRAINT FK_CONV_COD_SEGMENTO FOREIGN KEY (COD_SEGMENTO) REFERENCES SEGMENTOS (COD_SEGMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENCAO_SEGMENTO ADD CONSTRAINT FK_CONV_SEGMENTO_CONVENCAO FOREIGN KEY (COD_CONVENCAO) REFERENCES CONVENCAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENCAO_VENCIMENTOS ADD CONSTRAINT FK_CONVENCAO_VENCIMENTOS_CONV FOREIGN KEY (COD_CONVENCAO) REFERENCES CONVENCAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONVENIO_COBRANCA ADD CONSTRAINT FK_CONVENIO_COBRANCA_1 FOREIGN KEY (COD_BANCO) REFERENCES BANCO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_COBRANCA ADD CONSTRAINT FK_CONVENIO_COBRANCA_2 FOREIGN KEY (COD_PADRAO_BANCARIO) REFERENCES PADRAO_BANCARIO (COD_PADRAO_BANCARIO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_COBRANCA ADD CONSTRAINT FK_CONVENIO_COBRANCA_3 FOREIGN KEY (COD_CONTA_BANCARIA) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERVICO ADD CONSTRAINT FK_CONVENIO_TIPO_SERVICO_CONVEN FOREIGN KEY (COD_CONVENIO) REFERENCES CONVENIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERVICO ADD CONSTRAINT FK_CONVENIO_TIPO_SERVICO_IMPRES FOREIGN KEY (COD_IMPRESSORA) REFERENCES IMPRESSORAS (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERVICO ADD CONSTRAINT FK_CONVENIO_TIPO_SERVICO_TIPO_S FOREIGN KEY (COD_TIPO_SERVICO) REFERENCES TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERV_ESPECIALID ADD CONSTRAINT FK_CONVENIO_TIPO_SERV_ESP2 FOREIGN KEY (COD_CONVENIO_TIPO_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERV_ESPECIALID ADD CONSTRAINT FK_CONVENIO_TIPO_SERV_ESPECIALI FOREIGN KEY (COD_ESPECIALIDADE_MEDICA) REFERENCES ESPECIALIDADES_MEDICAS (COD_ESPECIALIDADE_MEDICA) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERV_EXCESSAO ADD CONSTRAINT FK_CONVENIO_TIPO_SERV_EXC1 FOREIGN KEY (COD_STATUS_ASSOCIADO) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_CONVENIO_TIPO_SERV_EXCESSAO_;
ALTER TABLE CONVENIO_TIPO_SERV_EXCESSAO ADD CONSTRAINT FK_CONVENIO_TIPO_SERV_EXC2 FOREIGN KEY (COD_PERIODICIDADE) REFERENCES PERIODICIDADE (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVENIO_TIPO_SERV_EXCESSAO ADD CONSTRAINT FK_CONVENIO_TIPO_SERV_EXC3 FOREIGN KEY (COD_TIPO_SERVICO_CONVENIO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE CONVITE ADD CONSTRAINT FK_CONVITE_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_CONVITE2;
ALTER TABLE CONVITE ADD CONSTRAINT FK_CONVITE_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_CONVITE1;
ALTER TABLE CONV_COB_CANAIS_PAGAMENTO ADD CONSTRAINT FK_CONV_COB_CANAIS_PAGAMENTO_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONV_COB_TABELA_TARIFAS ADD CONSTRAINT FK_CONV_COB_TABELA_TARIFAS_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONV_COB_TARIFA_CANAIS ADD CONSTRAINT FK_CONV_COB_TARIFA_CANAIS_1 FOREIGN KEY (COD_CANAIS) REFERENCES CONV_COB_CANAIS_PAGAMENTO (COD_CANAIS) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CONV_COB_TARIFA_CANAIS ADD CONSTRAINT FK_CONV_COB_TARIFA_CANAIS_2 FOREIGN KEY (COD_TABELA) REFERENCES CONV_COB_TABELA_TARIFAS (COD_CONV_COB_TABELA_TARIFAS) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE DECLARACAO_ARQUIVO ADD CONSTRAINT FK_DECLARACAO_ARQUIVO_1 FOREIGN KEY (COD_TABELA_RELACIONADA) REFERENCES TABELAS_RELACIONADAS (COD_TABELAS_RELACIONADAS) ON UPDATE CASCADE;
ALTER TABLE DEPENDENTE ADD CONSTRAINT FK_DEPENDENTE_1 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_DEPENDENTE (COD_STATUS_DEPENDENTE) ON UPDATE CASCADE;
ALTER TABLE DEPENDENTE ADD CONSTRAINT FK_DEPENDENTE_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE DEPENDENTE ADD CONSTRAINT FK_DEPENDENTE_PARENTESCO FOREIGN KEY (PARENTESCO) REFERENCES PARENTESCO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_DEPENDENTE2;
ALTER TABLE DEPENDENTE_COMERCIARIO ADD CONSTRAINT FK_DEPCOM_COMERCIARIO FOREIGN KEY (COMERCIARIO) REFERENCES COMERCIARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE DEPENDENTE_COMERCIARIO ADD CONSTRAINT FK_DEPCOM_PARENTESCO FOREIGN KEY (PARENTESCO) REFERENCES PARENTESCO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE DEPENDENTE_COMERCIARIO ADD CONSTRAINT FK_DEPENDENTE_COMERCIARIO_1 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_DEPENDENTE (COD_STATUS_DEPENDENTE) ON UPDATE CASCADE;
ALTER TABLE DEVOLUCAO_DOCUMENTOS ADD CONSTRAINT FK_DEV_DOC_MOTIVO FOREIGN KEY (COD_MOTIVO_DEVOLUCAO) REFERENCES MOTIVO_DEVOLUCAO (COD_MOTIVO) ON UPDATE CASCADE;
ALTER TABLE DEVOLUCAO_DOCUMENTOS ADD CONSTRAINT FK_DEV_DOC_TIPO FOREIGN KEY (COD_DOCUMENTO_TIPO) REFERENCES DOCUMENTO_TIPO (COD_DOCUMENTO_TIPO) ON UPDATE CASCADE;
ALTER TABLE DEVOLUCAO_DOCUMENTOS ADD CONSTRAINT FK_DEV_DOC_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE DISPENSA_RECOLHIMENTO ADD CONSTRAINT FK_DISPENSA_RECOLHIMENTO_USUARI FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE DOCUMENTO_CONTROLE ADD CONSTRAINT FK_DOCUMENTO_CONTROLE_DESTINO FOREIGN KEY (DOCUMENTO_DESTINO) REFERENCES DOCUMENTO_DESTINO (COD_DESTINO_DOCUMENTO) ON UPDATE CASCADE;
ALTER TABLE DOCUMENTO_CONTROLE ADD CONSTRAINT FK_DOCUMENTO_CONTROLE_TIPO FOREIGN KEY (DOCUMENTO_TIPO) REFERENCES DOCUMENTO_TIPO (COD_DOCUMENTO_TIPO) ON UPDATE CASCADE;
ALTER TABLE DOCUMENTO_CONTROLE ADD CONSTRAINT FK_DOCUMENTO_CONTROLE_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_BASE_TERRITORIAL FOREIGN KEY (COD_BASE_TERRITORIAL) REFERENCES BASE_TERRITORIAL (COD_BASE) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_CONTADOR FOREIGN KEY (CONTADOR) REFERENCES CONTABILIDADE (CNPJ) ON UPDATE CASCADE
  USING INDEX FK_EMPRESA;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_ENTIDADE FOREIGN KEY (COD_ENTIDADE) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_PORTE FOREIGN KEY (COD_PORTE) REFERENCES EMPRESA_PORTE (COD_PORTE) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_SEGMENTO FOREIGN KEY (COD_SEGMENTO) REFERENCES SEGMENTOS (COD_SEGMENTO) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_STATUS FOREIGN KEY (COD_STATUS) REFERENCES EMPRESA_STATUS (COD_EMPRESA_STATUS) ON UPDATE CASCADE;
ALTER TABLE EMPRESA ADD CONSTRAINT FK_EMPRESA_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE EMPRESA_CONTATOS ADD CONSTRAINT FK_EMPRESA_CONTATOS_1 FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EMPRESA_GRUPO ADD CONSTRAINT FK_EMPRESA_GRUPO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EMPRESA_GRUPO ADD CONSTRAINT FK_EMPRESA_GRUPO_GRUPO FOREIGN KEY (COD_GRUPO) REFERENCES GRUPO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_EMPRESA_GRUPO;
ALTER TABLE EMPRESA_MUDANCA ADD CONSTRAINT FK_EMPRESA_MUDANCA_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EMPRESA_MUDANCA ADD CONSTRAINT FK_EMPRESA_MUDANCA_STATUS_ANT FOREIGN KEY (COD_STATUS_ANTERIOR) REFERENCES EMPRESA_STATUS (COD_EMPRESA_STATUS) ON UPDATE CASCADE;
ALTER TABLE EMPRESA_MUDANCA ADD CONSTRAINT FK_EMPRESA_MUDANCA_STATUS_NOVO FOREIGN KEY (COD_STATUS_NOVO) REFERENCES EMPRESA_STATUS (COD_EMPRESA_STATUS) ON UPDATE CASCADE;
ALTER TABLE EMPRESA_MUDANCA ADD CONSTRAINT FK_EMPRESA_MUDANCA_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ENQUADRAMENTO_VERIFICACAO ADD CONSTRAINT FK_ENQUADRAMENTO_ENTIDADE FOREIGN KEY (COD_ENTIDADE) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENQUADRAMENTO_VERIFICACAO ADD CONSTRAINT FK_ENQ_VERIFICACAO_USARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_ENQUADRAMENTO_VERIFICACAO_US;
ALTER TABLE ENTIDADE_MANDATO ADD CONSTRAINT FK_ENTIDADE_MANDATO_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_MANDATO (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT FK_ENTIDADE_MUDANCA_STATUS_1 FOREIGN KEY (COD_STATUS_ANTERIOR) REFERENCES ENTIDADE_SINDICAL_STATUS (COD_ENTIDADE_SINDICAL_STATUS) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT FK_ENTIDADE_MUDANCA_STATUS_2 FOREIGN KEY (COD_STATUS_NOVO) REFERENCES ENTIDADE_SINDICAL_STATUS (COD_ENTIDADE_SINDICAL_STATUS) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT FK_ENTIDADE_MUDANCA_STATUS_3 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT FK_ENTIDADE_MUDANCA_STATUS_ENT FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_MUDANCA_STATUS ADD CONSTRAINT FK_ENTIDADE_MUDANCA_STATUS_USU FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL ADD CONSTRAINT FK_ENTIDADE_SINDICAL_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_ARQUIVOS ADD CONSTRAINT FK_ENTIDADE_SINDICAL_ARQUIVOS_1 FOREIGN KEY (COD_ENTIDADE_CEDENTES) REFERENCES ENTIDADE_SINDICAL_CEDENTES (COD_ENTIDADE_CEDENTES) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_ARQUIVOS_DET ADD CONSTRAINT FK_ENTIDADE_SINDICAL_ARQUIVOS_D FOREIGN KEY (COD_ENTIDADE_ARQUIVO) REFERENCES ENTIDADE_SINDICAL_ARQUIVOS (COD_ENTIDADE_ARQUIVO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_1 FOREIGN KEY (COD_AREA_GEOECONOMICA) REFERENCES ENTIDADE_SINDICAL_REP_AREA_GEO (COD_AREA_GEOECONOMICA) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_2 FOREIGN KEY (COD_GRUPO) REFERENCES ENTIDADE_SINDICAL_REP_GRUPO (COD_GRUPO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_3 FOREIGN KEY (COD_CLASSE) REFERENCES ENTIDADE_SINDICAL_REP_CLASSE (COD_CLASSE) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_4 FOREIGN KEY (COD_ABRANGENCIA) REFERENCES ENTIDADE_SINDICAL_REP_ABRAN (COD_ABRANGENCIA) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_ENTID FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE_CIDADES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_CIDAD FOREIGN KEY (COD_ENTIDADE_SIND_BASE_SEG) REFERENCES ENTIDADE_SINDICAL_BASE_SEG (COD_ENTIDADE_SIND_BASE_SEG) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE_EXCLUSAO ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_EXCLU FOREIGN KEY (COD_ENTIDADE_SIND_BASE_SEG) REFERENCES ENTIDADE_SINDICAL_BASE_SEG (COD_ENTIDADE_SIND_BASE_SEG) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE_SEG ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_SEG_1 FOREIGN KEY (COD_BASE) REFERENCES ENTIDADE_SINDICAL_BASE (COD_BASE) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_BASE_SEG ADD CONSTRAINT FK_ENTIDADE_SINDICAL_BASE_SEG_2 FOREIGN KEY (COD_SEGMENTO) REFERENCES ENTIDADE_SINDICAL_SEGMENTO (COD_SEGMENTO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_CEDENTES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_CEDENTES_1 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_CONTATOS ADD CONSTRAINT FK_ENTIDADE_SINDICAL_CONTATOS_1 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_ENDERECOS ADD CONSTRAINT FK_ENTIDADE_SINDICAL_ENDERECOS_ FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_GRUPO ADD CONSTRAINT FK_ENTIDADE_SINDICAL_GRUPO_1 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_GRUPO ADD CONSTRAINT FK_ENTIDADE_SINDICAL_GRUPO_2 FOREIGN KEY (COD_GRUPO) REFERENCES GRUPO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_INTEGRANT1 FOREIGN KEY (COD_CARGO_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL_CARGO (COD_CARGO_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_INTEGRANT2 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_INTEGRANTES_ENTID (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_INTEGRANT3 FOREIGN KEY (COD_ENTIDADE_MANDATO) REFERENCES ENTIDADE_MANDATO (COD_ENTIDADE_MANDATO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_INTEGRANTE FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_INTEGRANTES ADD CONSTRAINT FK_ENT_SINDICAL_INTEGRANTE_TRAT FOREIGN KEY (COD_TRATAMENTO) REFERENCES FORMA_TRATAMENTO (COD_FORMA_TRATAMENTO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_LOG_FILIACAO ADD CONSTRAINT FK_ENTIDADE_SINDICAL_LOG_FILIA FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_LOG_FILIACAO ADD CONSTRAINT FK_ENTIDADE_SINDICAL_LOG_FILIAC FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_REQUER ADD CONSTRAINT FK_ENTIDADE_SINDICAL_REQUER_1 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_REQUER ADD CONSTRAINT FK_ENTIDADE_SINDICAL_REQUER_2 FOREIGN KEY (COD_STATUS_REQUERIMENTO) REFERENCES STATUS_REQUERIMENTO (COD_STATUS_REQUERIMENTO) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_SEG_CNAE ADD CONSTRAINT FK_ENTIDADE_SINDICAL_SEG_CNAE_1 FOREIGN KEY (COD_SEGMENTO) REFERENCES ENTIDADE_SINDICAL_SEGMENTO (COD_SEGMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_SEG_CNAE ADD CONSTRAINT FK_ENTIDADE_SIND_SEG_CNAE FOREIGN KEY (COD_CNAE) REFERENCES CNAEF (COD_CNAE) ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_TELEFONES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_TELEFONES_ FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ENTIDADE_SINDICAL_TELEFONES ADD CONSTRAINT FK_ENTIDADE_SINDICAL_TEL_TIP FOREIGN KEY (COD_TIPO_TELEFONE) REFERENCES TIPO_TELEFONE (COD_TIPO_TELEFONE) ON UPDATE CASCADE;
ALTER TABLE ERRO_PROESSAMENTO_GUIAS ADD CONSTRAINT FK_ERRO_PROC_GUIAS_DETALHE FOREIGN KEY (COD_PROC_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE ERRO_PROESSAMENTO_GUIAS ADD CONSTRAINT FK_ERRO_PROSS_GUIAS_CONSULTA FOREIGN KEY (COD_CONSULTA_RECEITA) REFERENCES CONSULTA_RECEITA (COD_CONSULTA_RECEITA) ON UPDATE CASCADE;
ALTER TABLE ESTORNO ADD CONSTRAINT FK_ESTORNO_1 FOREIGN KEY (COD_ESTORNO_MOTIVO) REFERENCES ESTORNO_MOTIVO (COD_ESTORNO_MOTIVO) ON UPDATE CASCADE;
ALTER TABLE ESTORNO ADD CONSTRAINT FK_ESTORNO_2 FOREIGN KEY (COD_ESTORNO_STATUS) REFERENCES ESTORNO_STATUS (COD_ESTORNO_STATUS) ON UPDATE CASCADE;
ALTER TABLE ESTORNO ADD CONSTRAINT FK_ESTORNO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ESTORNO_ARRECADACAO_DETALHE ADD CONSTRAINT FK_ESTORNO_ARRECADACAO_DETALHE1 FOREIGN KEY (COD_ARRECADACAO_DETALHE) REFERENCES ARRECADACAO_DETALHE (COD_ARRECADACAO_DETALHE) ON UPDATE CASCADE;
ALTER TABLE ESTORNO_ARRECADACAO_DETALHE ADD CONSTRAINT FK_ESTORNO_ARRECADACAO_DETALHE_ FOREIGN KEY (COD_ESTORNO_DETALHE) REFERENCES ESTORNO_DETALHE (COD_ESTORNO_DETALHE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ESTORNO_CONTATOS ADD CONSTRAINT FK_ESTORNO_CONTATOS_ESTORNO FOREIGN KEY (COD_ESTORNO) REFERENCES ESTORNO (COD_ESTORNO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ESTORNO_DETALHE ADD CONSTRAINT FK_ESTORNO_DETALHE_1 FOREIGN KEY (COD_ESTORNO) REFERENCES ESTORNO (COD_ESTORNO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ESTORNO_EVENTO ADD CONSTRAINT FK_ESTORNO_EVENTO_ESTORNO FOREIGN KEY (COD_ESTORNO) REFERENCES ESTORNO (COD_ESTORNO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ESTORNO_EVENTO ADD CONSTRAINT FK_ESTORNO_EVENTO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE ESTORNO_GUIAS ADD CONSTRAINT FK_ESTORNO_GUIAS_DETALHE FOREIGN KEY (PROCESSAMENTO_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE EXAMES ADD CONSTRAINT FK_EXAMES FOREIGN KEY (COD_CONVENIO) REFERENCES CONVENIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE EXAMES ADD CONSTRAINT FK_EXAMES1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE EXAMES ADD CONSTRAINT FK_EXAMES2 FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE EXAME_VALOR ADD CONSTRAINT FK_EXAME_VALOR FOREIGN KEY (COD_TIPO_EXAME) REFERENCES TIPO_EXAME (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EXAME_VALOR ADD CONSTRAINT FK_EXAME_VALOR1 FOREIGN KEY (CONVENIO) REFERENCES CONVENIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FAA_CONTRIBUINTES ADD CONSTRAINT FK_FAA_CONTRIBUINTES_FAA FOREIGN KEY (COD_FAA) REFERENCES ASSISTENCIAL (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FERIADOS_CIDADES ADD CONSTRAINT FK_FERIADOS_CIDADES_FERIADO FOREIGN KEY (COD_FERIADO) REFERENCES FERIADOS (CODIGO) ON UPDATE CASCADE;
ALTER TABLE FILA_MOVIMENTO ADD CONSTRAINT FK_FILA_MOV_ETAPA FOREIGN KEY (COD_ETAPA) REFERENCES FILA_ETAPA (COD_FILA_ETAPA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FILA_MOVIMENTO ADD CONSTRAINT FK_FILA_MOV_FILA FOREIGN KEY (COD_FILA) REFERENCES FILA (COD_FILA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FILA_MOVIMENTO ADD CONSTRAINT FK_FILA_MOV_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_CNAE FOREIGN KEY (COD_CNAE) REFERENCES CNAEF (COD_CNAE) ON UPDATE CASCADE;
ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_FORNECEDOR (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_UF FOREIGN KEY (ENDERECO_ENTREGA_COD_UF) REFERENCES UF (COD_UF) ON UPDATE CASCADE;
ALTER TABLE FORNECEDOR ADD CONSTRAINT FK_FORNECEDOR_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE GPS ADD CONSTRAINT FK_GPS_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE GRUPO_CUSTO ADD CONSTRAINT FK_GRUPO_CUSTO_CONTA FOREIGN KEY (COD_CONTA) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE GRUPO_ESPECIALIDADES_DETALHE ADD CONSTRAINT FK_GRUPO_ESPECIALIDADES_DET1 FOREIGN KEY (COD_GRUPO) REFERENCES GRUPO_ESPECIALIDADES (COD_GRUPO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_GRUPO_ESPECIALIDADES_DETALHE;
ALTER TABLE GRUPO_ESPECIALIDADES_DETALHE ADD CONSTRAINT FK_GRUPO_ESPECIALIDADES_DET2 FOREIGN KEY (COD_ESPECIALIDADE_MEDICA) REFERENCES ESPECIALIDADES_MEDICAS (COD_ESPECIALIDADE_MEDICA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE GUIAS_DA_WEB ADD CONSTRAINT FK_GUIAS_DA_WEB_1 FOREIGN KEY (COD_REMESSA_BANCO) REFERENCES REMESSA_BANCO (COD_REMESSA_BANCO) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE HISTORICO_ASSOCIADO_EMPRESA ADD CONSTRAINT FK_HISTORICO_ASSOCIADO_EMPRESA FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE
  USING INDEX FK_HISTORICO_ASSOCIADO_EMPRESA_;
ALTER TABLE HISTORICO_ASSOCIADO_EMPRESA ADD CONSTRAINT FK_HISTORICO_ASSOCIADO_EMPRESA1 FOREIGN KEY (CNPJ) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE;
ALTER TABLE HISTORICO_ASSOCIADO_EMPRESA ADD CONSTRAINT FK_HISTORICO_ASSOCIADO_EMPRESA2 FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE HISTORICO_ASSOCIADO_EMPRESA ADD CONSTRAINT FK_HISTORICO_ASSOCIADO_EMPRESA3 FOREIGN KEY (COD_HOMOLOGACAO) REFERENCES HOMOLOGACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE HOMOLOGACAO ADD CONSTRAINT FK_HOMOLOGACAO_AFASTAMENTO FOREIGN KEY (TIPO_AFASTAMENTO) REFERENCES TIPO_AFASTAMENTO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_HOMOLOGACAO4;
ALTER TABLE HOMOLOGACAO ADD CONSTRAINT FK_HOMOLOGACAO_ASSOCIADO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_HOMOLOGACAO3;
ALTER TABLE HOMOLOGACAO ADD CONSTRAINT FK_HOMOLOGACAO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_HOMOLOGACAO1;
ALTER TABLE HOMOLOGACAO ADD CONSTRAINT FK_HOMOLOGACAO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_HOMOLOGACAO2;
ALTER TABLE HOMOLOGACAO_WEB_HORARIO ADD CONSTRAINT FK_HOMOLOGACAO_WEB_HORARIO_1 FOREIGN KEY (COD_HOMOLOGACAO_WEB) REFERENCES HOMOLOGACAO_WEB (COD_HOMOLOGACAO_WEB) ON UPDATE CASCADE;
ALTER TABLE HOMOLOGADOR ADD CONSTRAINT FK_HOMOLOGADOR_1 FOREIGN KEY (COD_STATUS) REFERENCES STATUS_HOMOLOGADOR (COD_STATUS) ON UPDATE CASCADE;
ALTER TABLE HORARIOS_CONFIG_AGEND_SERVICO ADD CONSTRAINT FK_HORARIOS_CONFIG_AGEND_SERVIC FOREIGN KEY (COD_CONFIG_AGENDAMENTO) REFERENCES CONFIG_AGENDAMENTO_SERVICO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE HORARIO_AGENDAMENTO_SERVICO ADD CONSTRAINT FK_HORARIO_AGENDAMENTO_SERVICO_ FOREIGN KEY (CODIGO_AGENDAMENTO_SERVICO) REFERENCES AGENDAMENTO_SERVICO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE HORARIO_MARCACAO ADD CONSTRAINT FK_HM_FILIAL FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE
  USING INDEX FK_HORARIO_MARCACAO_FILIAL;
ALTER TABLE ITENS_CHECK_LIST_HOMOLOGACAO ADD CONSTRAINT FK_ITENS_CHECK_LIST_HOMOLOGACAO FOREIGN KEY (COD_CHECK_LIST_HOMOLOGACAO) REFERENCES CHECK_LIST_HOMOLOGACAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ITENS_CONTAS ADD CONSTRAINT FK_ITENS_CONTA FOREIGN KEY (CONTA) REFERENCES CONTAS_RECEBER (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ITENS_CONTAS ADD CONSTRAINT FK_ITENS_CONVENIO FOREIGN KEY (CONVENIO) REFERENCES CONVENIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ITENS_EXAME ADD CONSTRAINT FK_ITENS_EXAME FOREIGN KEY (COD_EXAME) REFERENCES EXAMES (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ITENS_SERVICO ADD CONSTRAINT FK_ITENS_SERVICO_LANCAMENTOS_SE FOREIGN KEY (CODIGO_LANCAMENTO_SERVICO) REFERENCES LANCAMENTOS_SERVICOS (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ITENS_SERVICO_GENERICO ADD CONSTRAINT FK_ITENS_SERVICO_GENERICO_CODIG FOREIGN KEY (CODIGO_LANCAMENTO_SERV_GENERICO) REFERENCES LANCAMENTOS_SERVICOS_GENERICO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_ASSOCIA FOREIGN KEY (COD_ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_CODIGO FOREIGN KEY (USUARIO_LIBERACAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_TIPO_SE FOREIGN KEY (COD_CONVENIO_TIPO_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS_GENERICO ADD CONSTRAINT FK_COD_ESPECIALIDADE_MEDICA FOREIGN KEY (COD_ESPECIALIDADE_MEDICA) REFERENCES ESPECIALIDADES_MEDICAS (COD_ESPECIALIDADE_MEDICA) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS_GENERICO ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_COMERC FOREIGN KEY (COD_COMERCIARIO) REFERENCES COMERCIARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS_GENERICO ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_GENERIC FOREIGN KEY (COD_CONVENIO_TIPO_SERVICO) REFERENCES CONVENIO_TIPO_SERVICO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE LANCAMENTOS_SERVICOS_GENERICO ADD CONSTRAINT FK_LANCAMENTOS_SERVICOS_USU FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_CONTADOR FOREIGN KEY (CONTABILIDADE) REFERENCES CONTABILIDADE (CNPJ) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_FILIAL FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE
  USING INDEX FK_MARCAR_HOMOLOGACAO_1;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_HOMOLOGADOR FOREIGN KEY (COD_HOMOLOGADOR) REFERENCES HOMOLOGADOR (COD_HOMOLOGADOR) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_TIPO_AFASTAMENTO FOREIGN KEY (TIPO_AFASTAMENTO) REFERENCES TIPO_AFASTAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO ADD CONSTRAINT FK_MH_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO_HORARIO ADD CONSTRAINT FK_MARCAR_HOMOLOGACAO_HORARIO_1 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE MARCAR_HOMOLOGACAO_HORARIO ADD CONSTRAINT FK_MARCAR_HOMOLOGACAO_HORARIO_2 FOREIGN KEY (COD_MARCAR_HOMOLOGACAO) REFERENCES MARCAR_HOMOLOGACAO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE MENSALIDADE ADD CONSTRAINT FK_MENSALIDADE FOREIGN KEY (TIPOASSOCIADO) REFERENCES TIPOSOCIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTACAO_CHEQUE ADD CONSTRAINT FK_MOVIMENTACAO_CHEQUE_1 FOREIGN KEY (COD_CONTA_BANCARIA_MOVIMENTO) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTACAO_CHEQUE ADD CONSTRAINT FK_MOVIMENTACAO_CHEQUE_TIPO FOREIGN KEY (TIPO_MOVIMENTO) REFERENCES TIPO_MOVIMENTO_CHEQUE (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTACAO_CHEQUE ADD CONSTRAINT FK_MOVIMENTACAO_CHEQUE_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_1 FOREIGN KEY (COD_PLANO_CONTA) REFERENCES PLANO_CONTA (COD_PLANO_CONTA) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_2 FOREIGN KEY (COD_USUARIO_LANCAMENTO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_3 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_4 FOREIGN KEY (COD_CONTA_BANCARIA) REFERENCES CONTA_BANCARIA (COD_CONTA) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_5 FOREIGN KEY (COD_CENTRO_CUSTO) REFERENCES CENTRO_CUSTO (COD_CENTRO_CUSTO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_6 FOREIGN KEY (COD_ESTORNO) REFERENCES CAIXA_ESTORNO (COD_CAIXA_ESTORNO) ON UPDATE CASCADE;
ALTER TABLE MOVIMENTO_CAIXA ADD CONSTRAINT FK_MOVIMENTO_CAIXA_7 FOREIGN KEY (COD_FORNECEDOR) REFERENCES FORNECEDOR (COD_FORNECEDOR) ON UPDATE CASCADE;
ALTER TABLE OFICIOS ADD CONSTRAINT FK_OFICIOS_1 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE OFICIOS_DETALHE ADD CONSTRAINT FK_OFICIOS_DETALHE_1 FOREIGN KEY (COD_OFICIO) REFERENCES OFICIOS (COD_OFICIO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE OFICIOS_DETALHE ADD CONSTRAINT FK_OFICIOS_DETALHE_2 FOREIGN KEY (COD_ENTIDADE_SINDICAL) REFERENCES ENTIDADE_SINDICAL (COD_ENTIDADE_SINDICAL) ON UPDATE CASCADE;
ALTER TABLE OFICIOS_DETALHE ADD CONSTRAINT FK_OFICIOS_DETALHE_3 FOREIGN KEY (COD_INTEGRANTE) REFERENCES ENTIDADE_SINDICAL_INTEGRANTES (COD_INTEGRANTE) ON UPDATE CASCADE;
ALTER TABLE OPOSICAO ADD CONSTRAINT FK_OPOSICAO_FILIAL FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE OPOSICAO ADD CONSTRAINT FK_OPOSICAO_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE OPOSICAO_ASSOCIATIVA ADD CONSTRAINT FK_OPOSICAO_ASSOCIATIVA_USUAIRO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT FK_PAGAMENTO_SERVICO_FORMAPAGAM FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT FK_PAGAMENTO_SERVICO_LANCAMENTO FOREIGN KEY (COD_LANCAMENTO_SERVICO) REFERENCES LANCAMENTOS_SERVICOS (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT FK_PAGAMENTO_SERVICO_USUARIO FOREIGN KEY (COD_USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PAGAMENTO_SERVICO ADD CONSTRAINT FK_PAGAMENTO_SERVICO_USUARIO1 FOREIGN KEY (COD_USUARIO_LANCAMENTO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PAGAMENTO_SERVICO_GENERICO ADD CONSTRAINT FK_PAGAMENTO_SERVICO_GENERICO_C FOREIGN KEY (CODIGO_LANCAMENTO_SERV_GENERICO) REFERENCES LANCAMENTOS_SERVICOS_GENERICO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PLANO_BASICO ADD CONSTRAINT FK_COD_FORMA_PAGAMENTO1 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PLANO_BASICO ADD CONSTRAINT FK_PLANO_BASICO_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PLANO_BASICO ADD CONSTRAINT FK_PLANO_BASICO_PROC_DETALHE FOREIGN KEY (COD_PROC_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE PLANO_BASICO ADD CONSTRAINT FK_PLANO_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PLANO_BASICO ADD CONSTRAINT FK_PLANO_USUARIO_EMISSAO FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PRE_CADASTRO_HISTORICO ADD CONSTRAINT FK_PRE_CADASTRO_HISTORICO_1 FOREIGN KEY (COD_GRUPO) REFERENCES GRUPO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PROCESSAMENTO ADD CONSTRAINT FK_PROCESSAMENTO_CONVENIO FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE PROCESSAMENTO ADD CONSTRAINT FK_PROCESSAMENTO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT FK_PROCESSAMENTO_DET_CONVENIO FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT FK_PROCESSAMENTO_DET_FORMA_ARRE FOREIGN KEY (FORMA_ARRECADACAO) REFERENCES FORMA_ARRECADACAO (COD_FORMA_ARRECADACAO) ON UPDATE CASCADE;
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT FK_PROCESSAMENTO_DET_PROCESSA FOREIGN KEY (COD_PROCESSAMENTO) REFERENCES PROCESSAMENTO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
  USING INDEX FK_PROCESSAMENTO_DETALHES_1;
ALTER TABLE PROCESSAMENTO_DETALHES ADD CONSTRAINT FK_PROCESSAMENTO_DET_TIPO_PGTO FOREIGN KEY (TIPO_PAGAMENTO) REFERENCES TIPOPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_1 FOREIGN KEY (COD_RECLAMADO) REFERENCES PROCESSO_JURIDICO_RECLAMADO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_2 FOREIGN KEY (COD_CLIENTE_PROCESSO) REFERENCES CLIENTES_PROCESSOS (COD_CLIENTE_PROCESSO) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_3 FOREIGN KEY (COD_TIPO_PROCESSO) REFERENCES TIPO_PROCESSO (COD_TIPO_PROCESSO) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_4 FOREIGN KEY (COD_GRUPO_PROCESSO) REFERENCES GRUPO_PROCESSO (COD_GRUPO_PROCESSO) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_5 FOREIGN KEY (COD_COMARCA) REFERENCES COMARCA (COD_COMARCA) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_6 FOREIGN KEY (COD_VARA) REFERENCES VARA (COD_VARA) ON UPDATE CASCADE;
ALTER TABLE PROCESSOS_JURIDICOS ADD CONSTRAINT FK_PROCESSOS_JURIDICOS_7 FOREIGN KEY (COD_ADVOGADO) REFERENCES ADVOGADOS (COD_ADVOGADO) ON UPDATE CASCADE;
ALTER TABLE RECADOS ADD CONSTRAINT FK_RECADOS_1 FOREIGN KEY (COD_USUARIO_REMETENTE) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE RECADOS ADD CONSTRAINT FK_RECADOS_2 FOREIGN KEY (COD_USUARIO_DESTINATARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE RECIBO_AVULSO ADD CONSTRAINT FK_RECIBO_AVULSO_FORMA_PGTO FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE REMESSA_BANCO ADD CONSTRAINT FK_REMESSA_BANCO_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE REMESSA_BANCO ADD CONSTRAINT FK_REMESSA_BANCO_2 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE REMESSA_BANCO ADD CONSTRAINT FK_REMESSA_BANCO_3 FOREIGN KEY (COD_USUARIO_REMESSA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE REMESSA_BANCO_DETALHE ADD CONSTRAINT FK_REMESSA_BANCO_DETALHE_1 FOREIGN KEY (COD_REMESSA_BANCO) REFERENCES REMESSA_BANCO (COD_REMESSA_BANCO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE RPA ADD CONSTRAINT FK_RPA_1 FOREIGN KEY (COD_FILIAL) REFERENCES FILIAL (COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE RPA ADD CONSTRAINT FK_RPA_2 FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE RPA ADD CONSTRAINT FK_RPA_3 FOREIGN KEY (COD_FORNECEDOR) REFERENCES FORNECEDOR (COD_FORNECEDOR) ON UPDATE CASCADE;
ALTER TABLE RPA_ITENS ADD CONSTRAINT FK_RPA_ITENS_1 FOREIGN KEY (COD_RPA, COD_FILIAL_RPA) REFERENCES RPA (COD_RPA, COD_FILIAL) ON UPDATE CASCADE;
ALTER TABLE SALARIO_FAMILIA ADD CONSTRAINT FK_SALARIO_FAMILIA FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SEGMENTOS_CNAE ADD CONSTRAINT FK_SEGMENTO FOREIGN KEY (COD_SEGMENTO) REFERENCES SEGMENTOS (COD_SEGMENTO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SEGMENTOS_CNAE ADD CONSTRAINT FK_SEGMENTOS_CNAE FOREIGN KEY (COD_CNAE) REFERENCES CNAEF (COD_CNAE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SINDICAL ADD CONSTRAINT FK_COD_FORMA_PAGAMENTO FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SINDICAL ADD CONSTRAINT FK_SINDICAL_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SINDICAL ADD CONSTRAINT FK_SINDICAL_PROC_DETALHE FOREIGN KEY (COD_PROC_DETALHE) REFERENCES PROCESSAMENTO_DETALHES (COD_PROC_DETALHE) ON UPDATE CASCADE;
ALTER TABLE SINDICAL ADD CONSTRAINT FK_SINDICAL_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SINDICAL ADD CONSTRAINT FK_SINDICAL_USUARIO_EMISSAO FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SINDICAL_CONTRIBUINTES ADD CONSTRAINT FK_SINDICAL_CONTRIBUINTES_SINDI FOREIGN KEY (COD_SINDICAL) REFERENCES SINDICAL (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SITUACAO ADD CONSTRAINT FK_SITUACAO FOREIGN KEY (PROXIMO_STATUS) REFERENCES SITUACAO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SOCIAL ADD CONSTRAINT FK_COD_FORMA_PAGAMENTO2 FOREIGN KEY (COD_FORMA_PAGAMENTO) REFERENCES FORMAPAGAMENTO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SOCIAL ADD CONSTRAINT FK_SOCIAL_EMPRESA FOREIGN KEY (EMPRESA) REFERENCES EMPRESA (CNPJ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SOCIAL ADD CONSTRAINT FK_SOCIAL_USUARIO_BAIXA FOREIGN KEY (USUARIO_BAIXA) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SOCIAL ADD CONSTRAINT FK_SOCIAL_USUARIO_EMISSAO FOREIGN KEY (USUARIO_EMISSAO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE SOCIAL_ASSOCIADOS ADD CONSTRAINT FK_SOCIAL_ASSOCIADOS_ASSO FOREIGN KEY (ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SOCIAL_ASSOCIADOS ADD CONSTRAINT FK_SOCIAL_ASSOCIADOS_GUIA FOREIGN KEY (SOCIAL) REFERENCES SOCIAL (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TAGS ADD CONSTRAINT FK_TAGS_1 FOREIGN KEY (COD_TABELA_RELACIONADA) REFERENCES TABELAS_RELACIONADAS (COD_TABELAS_RELACIONADAS) ON UPDATE CASCADE;
ALTER TABLE TELEFONE ADD CONSTRAINT FK_TELEFONE_1 FOREIGN KEY (COD_TIPO_TELEFONE) REFERENCES TIPO_TELEFONE (COD_TIPO_TELEFONE) ON UPDATE CASCADE;
ALTER TABLE TIPO_COBRANCA ADD CONSTRAINT FK_TIPO_COBRANCA_1 FOREIGN KEY (COD_CONVENIO_COBRANCA) REFERENCES CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA) ON UPDATE CASCADE;
ALTER TABLE TIPO_COBRANCA ADD CONSTRAINT FK_TIPO_COBRANCA_2 FOREIGN KEY (COD_PLANO_CONTA) REFERENCES PLANO_CONTA (COD_PLANO_CONTA) ON UPDATE CASCADE;
ALTER TABLE TIPO_COBRANCA_ONDE_USAR ADD CONSTRAINT FK_TIPO_COBRANCA_ONDE_USAR_1 FOREIGN KEY (COD_TIPO_COBRANCA) REFERENCES TIPO_COBRANCA (COD_TIPO_COBRANCA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE UCTABRIGHTS ADD CONSTRAINT FK_UCTABRIGHTS_UCIDUSER FOREIGN KEY (UCIDUSER) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE UCTABRIGHTSEX ADD CONSTRAINT FK_UCTABRIGHTSEX_UCIDUSER FOREIGN KEY (UCIDUSER) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE USUARIO ADD CONSTRAINT FK_USUARIO_FILIAL FOREIGN KEY (FILIAL_PADRAO) REFERENCES FILIAL (COD_FILIAL) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VALOR_CONVITE ADD CONSTRAINT FK_VALOR_CONVITE FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE VERSAO ADD CONSTRAINT FK_VERSAO_USUARIO FOREIGN KEY (USUARIO) REFERENCES USUARIO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VOTO_ELETRONICO ADD CONSTRAINT FK_VOTO_ELETRONICO_ASSOCIADO FOREIGN KEY (COD_ASSOCIADO) REFERENCES ASSOCIADO (CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VOTO_ELETRONICO ADD CONSTRAINT FK_VOTO_ELETRONICO_USUARIO FOREIGN KEY (COD_USUARIO) REFERENCES USUARIO (CODIGO) ON UPDATE CASCADE;
ALTER TABLE WHATS_LOG ADD CONSTRAINT FK_WHATS_LOG_1 FOREIGN KEY (COD_FILA) REFERENCES WHATS_FILA_ENVIO (ID) ON DELETE CASCADE ON UPDATE CASCADE;


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX ARRECADACAO_IDX1 ON ARRECADACAO (SEU_NUMERO);
CREATE INDEX ARRECADACAO_IDX10 ON ARRECADACAO (DATA_PAGAMENTO);
CREATE INDEX ARRECADACAO_IDX11 ON ARRECADACAO (DATA_VENCIMENTO);
CREATE INDEX ARRECADACAO_IDX12 ON ARRECADACAO (WS_COD_RETORNO);
CREATE INDEX ARRECADACAO_IDX13 ON ARRECADACAO (DATA_EMISSAO);
CREATE INDEX ARRECADACAO_IDX2 ON ARRECADACAO (NOSSO_NUMERO);
CREATE INDEX ARRECADACAO_IDX3 ON ARRECADACAO (TABELA_RELACIONADA);
CREATE INDEX ARRECADACAO_IDX4 ON ARRECADACAO (COD_TABELA_RELACIONADA);
CREATE INDEX ARRECADACAO_IDX5 ON ARRECADACAO (CODIGO_DE_BARRAS);
CREATE INDEX ARRECADACAO_IDX6 ON ARRECADACAO (HASH_CODE_LINHA_ARQ_RETORNO);
CREATE INDEX ARRECADACAO_IDX7 ON ARRECADACAO (COMPETENCIA);
CREATE INDEX ARRECADACAO_IDX8 ON ARRECADACAO (COMPLEMENTAR);
CREATE INDEX ARRECADACAO_IDX9 ON ARRECADACAO (DATA_CREDITO);
CREATE INDEX ASSOCIADO_IDX1 ON ASSOCIADO (CPF);
CREATE INDEX CONSULTA_DADOS_CADASTRAIS_IDX1 ON CONSULTA_DADOS_CADASTRAIS (CNPJ);
CREATE INDEX CONSULTA_RECEITA_CNPJ ON CONSULTA_RECEITA (CNPJ);
CREATE INDEX IDX_EMPRESA_RAZAOSOCIAL ON EMPRESA (RAZAOSOCIAL);
CREATE INDEX ENTIDADE_SINDICAL_IDX1 ON ENTIDADE_SINDICAL (CODIGO_SINDICAL);
CREATE INDEX ERRO_PROESSAMENTO_GUIAS_ARQUIV ON ERRO_PROESSAMENTO_GUIAS (ARQUIVO);
CREATE INDEX ERRO_PROESSAMENTO_GUIAS_NUMERO ON ERRO_PROESSAMENTO_GUIAS (NOSSO_NUMERO);
CREATE INDEX GUIAS_DA_WEB_IDX1 ON GUIAS_DA_WEB (CODIGO);
CREATE INDEX IBE$SCRIPTS_BY_ACTION_ID ON IBE$SCRIPTS (IBE$SCRIPT_ACTION_ID);
CREATE UNIQUE INDEX IBE$SCRIPTS_BY_NAME ON IBE$SCRIPTS (IBE$SCRIPT_NAME);
CREATE INDEX PROCESSAMENTO_IDX1 ON PROCESSAMENTO (ARQUIVO);
CREATE INDEX RB_TABLE_FIELD_ALIAS_IDX ON RB_FIELD (TABLE_NAME, FIELD_ALIAS);
CREATE INDEX RB_TABLE_FIELD_NAME_IDX ON RB_FIELD (TABLE_NAME, FIELD_NAME);
CREATE INDEX FOLDER_ID_IDX ON RB_FOLDER (FOLDER_ID);
CREATE INDEX FOLDER_PARENT_IDX ON RB_FOLDER (PARENT_ID);
CREATE INDEX ITEM_FOLDER_TYPE_NAME_IDX ON RB_ITEM (FOLDER_ID, ITEM_TYPE, NAME);
CREATE INDEX ITEM_ID_IDX ON RB_ITEM (ITEM_ID);
CREATE INDEX RB_TABLE1_TABLE2_IDX ON RB_JOIN (TABLE_NAME1, TABLE_NAME2);
CREATE INDEX RB_TABLE_NAME_IDX ON RB_TABLE (TABLE_NAME);
CREATE INDEX REMESSA_BANCO_DETALHE_IDX1 ON REMESSA_BANCO_DETALHE (COD_ARRECADACAO);
CREATE INDEX TELEFONE_IDX1 ON TELEFONE (TABELA_RELACIONADA);
CREATE INDEX TELEFONE_IDX2 ON TELEFONE (COD_TABELA_RELACIONADA);


/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/



SET TERM ^ ;



/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/



/* Trigger: AGENDA_DE_HORARIOS_BI */
CREATE TRIGGER AGENDA_DE_HORARIOS_BI FOR AGENDA_DE_HORARIOS
ACTIVE BEFORE INSERT POSITION 0
AS                                                                  
 BEGIN                                                               
   IF (NEW.COD_AGENDA_DE_HORARIOS  IS NULL) THEN                     
     NEW.COD_AGENDA_DE_HORARIOS  = GEN_ID(GEN_AGENDA_DE_HORARIOS_ID,1);
 END
^

/* Trigger: ARRECADACAO_HISTORICO_BI */
CREATE TRIGGER ARRECADACAO_HISTORICO_BI FOR ARRECADACAO_HISTORICO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_ARRECADACAO_HISTORICO IS NULL) THEN
    NEW.COD_ARRECADACAO_HISTORICO = GEN_ID(GEN_ARRECADACAO_HISTORICO,1);
END
^

/* Trigger: BORDERO_BI */
CREATE TRIGGER BORDERO_BI FOR BORDERO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_bordero is null) then
    new.cod_bordero = gen_id(gen_bordero_id,1);
end
^

/* Trigger: CAIXA_MOVIMENTACAO_BI */
CREATE TRIGGER CAIXA_MOVIMENTACAO_BI FOR CAIXA_MOVIMENTACAO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_CAIXA_MOVIMENTACAO IS NULL) THEN
    NEW.COD_CAIXA_MOVIMENTACAO = GEN_ID(GEN_CAIXA_MOVIMENTACAO_ID,1);
END
^

/* Trigger: CONSULTA_RECEITA_BI */
CREATE TRIGGER CONSULTA_RECEITA_BI FOR CONSULTA_RECEITA
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_consulta_receita is null) then
    new.cod_consulta_receita = gen_id(gen_consulta_receita_id,1);
end
^

/* Trigger: CONVENCAO_BASE_BI */
CREATE TRIGGER CONVENCAO_BASE_BI FOR CONVENCAO_BASE
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_conv_base is null) then
    new.cod_conv_base = gen_id(gen_convencao_base_id,1);
end
^

/* Trigger: CONVENCAO_SEGMENTO_BI */
CREATE TRIGGER CONVENCAO_SEGMENTO_BI FOR CONVENCAO_SEGMENTO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_conv_segmento is null) then
    new.cod_conv_segmento = gen_id(gen_convencao_segmento_id,1);
end
^

/* Trigger: CONVENCAO_VENCIMENTOS_BI */
CREATE TRIGGER CONVENCAO_VENCIMENTOS_BI FOR CONVENCAO_VENCIMENTOS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_conv_vencimentos is null) then
    new.cod_conv_vencimentos = gen_id(gen_convencao_vencimentos_id,1);
end
^

/* Trigger: DOCUMENTO_TIPO_BI */
CREATE TRIGGER DOCUMENTO_TIPO_BI FOR DOCUMENTO_TIPO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_documento_tipo is null) then
    new.cod_documento_tipo = gen_id(gen_documento_tipo_id,1);
end
^

/* Trigger: EMPRESA_CONTATOS_BI */
CREATE TRIGGER EMPRESA_CONTATOS_BI FOR EMPRESA_CONTATOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_EMPRESA_CONTATOS_ID,1);
END
^

/* Trigger: EMPRESA_MUDANCA_BI */
CREATE TRIGGER EMPRESA_MUDANCA_BI FOR EMPRESA_MUDANCA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_EMPRESA_MUDANCA_ID,1);
END
^

/* Trigger: ENQUADRAMENTO_VERIFICACAO_BI */
CREATE TRIGGER ENQUADRAMENTO_VERIFICACAO_BI FOR ENQUADRAMENTO_VERIFICACAO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.codigo is null) then
    new.codigo = gen_id(gen_enq_verificacao_i,1);
end
^

/* Trigger: ENTIDADE_SINDICAL_ARQUIVOS_BI */
CREATE TRIGGER ENTIDADE_SINDICAL_ARQUIVOS_BI FOR ENTIDADE_SINDICAL_ARQUIVOS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_entidade_arquivo is null) then
    new.cod_entidade_arquivo = gen_id(gen_ent_sindical_arquivos,1);
end
^

/* Trigger: ENTIDADE_SINDICAL_BASE_CID_BI */
CREATE TRIGGER ENTIDADE_SINDICAL_BASE_CID_BI FOR ENTIDADE_SINDICAL_BASE_CIDADES
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_base_cid is null) then
    new.cod_base_cid = gen_id(gen_entid_sind_base_cid,1);
end
^

/* Trigger: ENTIDADE_SINDICAL_SEG_CNAE_BI */
CREATE TRIGGER ENTIDADE_SINDICAL_SEG_CNAE_BI FOR ENTIDADE_SINDICAL_SEG_CNAE
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.codigo is null) then
    new.codigo = gen_id(gen_entid_sind_seg_cnae,1);
end
^

/* Trigger: ENT_SINDICAL_ARQUIVOS_DET */
CREATE TRIGGER ENT_SINDICAL_ARQUIVOS_DET FOR ENTIDADE_SINDICAL_ARQUIVOS_DET
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_entidade_arquivo_det is null) then
    new.cod_entidade_arquivo_det = gen_id(gen_ent_sindical_arquivos_det,1);
end
^

/* Trigger: EVENTO_MANUTENCAO */
CREATE TRIGGER EVENTO_MANUTENCAO FOR REGISTRO
ACTIVE AFTER UPDATE POSITION 0
AS
begin
  /* Trigger text */
  POST_EVENT('EM MANUTENCAO');
end
^

/* Trigger: EVENTO_MSG_NA_REDE */
CREATE TRIGGER EVENTO_MSG_NA_REDE FOR MENSAGEM_NA_REDE
ACTIVE AFTER UPDATE POSITION 0
AS
begin
  POST_EVENT('MENSAGEM NA REDE');
end
^

/* Trigger: FAA_CONTRIBUINTES_BI */
CREATE TRIGGER FAA_CONTRIBUINTES_BI FOR FAA_CONTRIBUINTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_FAA_CONTRIBUINTES IS NULL) THEN
    NEW.COD_FAA_CONTRIBUINTES = GEN_ID(GEN_FAA_CONTRIBUINTES_ID,1);
END
^

/* Trigger: GUIAS_DA_WEB_BI */
CREATE TRIGGER GUIAS_DA_WEB_BI FOR GUIAS_DA_WEB
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_GUIAS_DA_WEB_ID,1);
END
^

/* Trigger: LOG_ERRO_BI0 */
CREATE TRIGGER LOG_ERRO_BI0 FOR LOG_ERROS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.COD_LOG_ERRO IS NULL) THEN
    NEW.COD_LOG_ERRO = GEN_ID(GEN_LOG_ERRO,1);
END
^

/* Trigger: RAIS_BI */
CREATE TRIGGER RAIS_BI FOR RAIS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_rais is null) then
    new.cod_rais = gen_id(gen_rais_id,1);
end
^

/* Trigger: RB_FOLDER_BI */
CREATE TRIGGER RB_FOLDER_BI FOR RB_FOLDER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.FOLDER_ID IS NULL) THEN
    NEW.FOLDER_ID = GEN_ID(FOLDER_ID_GEN,1);
END
^

/* Trigger: RB_ITEM_BI */
CREATE TRIGGER RB_ITEM_BI FOR RB_ITEM
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ITEM_ID IS NULL) THEN
    NEW.ITEM_ID = GEN_ID(ITEM_ID_GEN,1);
END
^

/* Trigger: RECADOS_BIUD0 */
CREATE TRIGGER RECADOS_BIUD0 FOR RECADOS
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
  POST_EVENT('RECADOS');
end
^

/* Trigger: REMESSA_BANCO_BI */
CREATE TRIGGER REMESSA_BANCO_BI FOR REMESSA_BANCO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_REMESSA_BANCO IS NULL) THEN
    NEW.COD_REMESSA_BANCO = GEN_ID(GEN_REMESSA_BANCO_ID,1);
END
^

/* Trigger: REMESSA_BANCO_DETALHE_BI */
CREATE TRIGGER REMESSA_BANCO_DETALHE_BI FOR REMESSA_BANCO_DETALHE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_REMESSA_BANCO_DETALHE,1);
END
^

/* Trigger: SCRIPT_PROCESSADO */
CREATE TRIGGER SCRIPT_PROCESSADO FOR SCRIPT_PROCESSADO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_SCRIPT_PROCESSADO IS NULL) THEN
    NEW.COD_SCRIPT_PROCESSADO = GEN_ID(GEN_SCRIPT_PROCESSADO,1);
END
^

/* Trigger: SEGMENTOS_CNAE_BI */
CREATE TRIGGER SEGMENTOS_CNAE_BI FOR SEGMENTOS_CNAE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_SEGMENTOS_CNAE_ID,1);
END
^

/* Trigger: SINDICAL_CONTRIBUINTES_BI */
CREATE TRIGGER SINDICAL_CONTRIBUINTES_BI FOR SINDICAL_CONTRIBUINTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_SINDICAL_CONTRIBUINTES IS NULL) THEN
    NEW.COD_SINDICAL_CONTRIBUINTES = GEN_ID(GEN_SINDICAL_CONTRIBUINTES_ID,1);
END
^

/* Trigger: TABELAS_OTIMIZADAS_BI */
CREATE TRIGGER TABELAS_OTIMIZADAS_BI FOR TABELAS_OTIMIZADAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_TABELAS_OTIMIZADAS,1);
END
^

/* Trigger: TELEFONE_BI */
CREATE TRIGGER TELEFONE_BI FOR TELEFONE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_TELEFONE IS NULL) THEN
    NEW.COD_TELEFONE = GEN_ID(GEN_TELEFONE,1);
END
^

/* Trigger: TIPO_TELEFONE_BI */
CREATE TRIGGER TIPO_TELEFONE_BI FOR TIPO_TELEFONE
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.cod_tipo_telefone is null) then
    new.cod_tipo_telefone = gen_id(gen_tipo_telefone_id,1);
end
^

/* Trigger: TRG_WHATS_CONECTADO */
CREATE TRIGGER TRG_WHATS_CONECTADO FOR WHATS_CONFIG
ACTIVE AFTER UPDATE POSITION 0
AS
begin
  POST_EVENT('WHATS_CONFIG');
end
^

/* Trigger: VOTO_ELETRONICO_BI */
CREATE TRIGGER VOTO_ELETRONICO_BI FOR VOTO_ELETRONICO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.COD_VOTO IS NULL) THEN
    NEW.COD_VOTO = GEN_ID(GEN_VOTO_ELETRONICO_ID,1);
END
^

/* Trigger: WHATS_LOG_BI */
CREATE TRIGGER WHATS_LOG_BI FOR WHATS_LOG
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_whats_log_id,1);
end
^
SET TERM ; ^



/******************************************************************************/
/***                           Stored procedures                            ***/
/******************************************************************************/



SET TERM ^ ;

ALTER PROCEDURE AGRUPA_PROCESSAMENTO_DETALHE
AS
declare variable cod_processamento_detalhe_t integer;
declare variable numero_guia varchar(20);
declare variable cod_processamento_detalhe_u integer;
begin

   for
     select processamento_detalhes.cod_proc_detalhe
     from processamento_detalhes
     where processamento_detalhes.numero_guia = ''
     order by processamento_detalhes.cod_proc_detalhe
     into :cod_processamento_detalhe_u do
   begin
       COD_PROCESSAMENTO_DETALHE_t = COD_PROCESSAMENTO_DETALHE_U - 1;

       for
         select processamento_detalhes.numero_guia
         from processamento_detalhes
         where processamento_detalhes.cod_proc_detalhe = :COD_PROCESSAMENTO_DETALHE_T
         into :numero_guia do

               begin

                     update processamento_detalhes
                     set processamento_detalhes.numero_guia = :numero_guia
                     where processamento_detalhes.cod_proc_detalhe = :COD_PROCESSAMENTO_DETALHE_U;

               end

   end
end^


ALTER PROCEDURE AJUSTE_CATAGUASES
AS
declare variable CNPJ varchar(14);
declare variable CONTADOR integer;
declare variable DATA_VENCIMENTO date;
declare variable DATA_PAGAMENTO date;
declare variable TABELA_RELACIONADA varchar(80) collate WIN_PTBR;
declare variable COD_TABELA_RELACIONADA varchar(80) collate WIN_PTBR;
declare variable COD_TIPO_COBRANCA integer;
declare variable COMPETENCIA integer;
declare variable COMPLEMENTAR integer;
declare variable COD_ARRECADACAO numeric(15,0);
begin
  /*============= percorre todas as empresas para localizar as guias duplicadas ==========*/
  for
     SELECT empresa.CNPJ
     from EMPRESA
     --where EMPRESA.CNPJ = '05103939000448'
     into :CNPJ do
  begin
    /*============= verifica se existe guias duplicadas ==============*/
    for
       select  count( ARRECADACAO.COD_ARRECADACAO)
              , ARRECADACAO.DATA_VENCIMENTO
              , ARRECADACAO.DATA_PAGAMENTO
              , COALESCE( ARRECADACAO.TABELA_RELACIONADA , '')
              , COALESCE( ARRECADACAO.COD_TABELA_RELACIONADA , '')
              , ARRECADACAO.COD_TIPO_COBRANCA
              , ARRECADACAO.COMPETENCIA
              , ARRECADACAO.COMPLEMENTAR
       from arrecadacao
       where ARRECADACAO.COD_TABELA_RELACIONADA = :CNPJ
         and ARRECADACAO.TABELA_RELACIONADA = 'EMPRESA'
         and ARRECADACAO.DATA_PAGAMENTO is null
       group by
                ARRECADACAO.DATA_VENCIMENTO
              , ARRECADACAO.DATA_PAGAMENTO
              , ARRECADACAO.TABELA_RELACIONADA
              , ARRECADACAO.COD_TABELA_RELACIONADA
              , ARRECADACAO.COD_TIPO_COBRANCA
              , ARRECADACAO.COMPETENCIA
              , ARRECADACAO.COMPLEMENTAR
       
       having count( ARRECADACAO.COD_ARRECADACAO) >1
       into :CONTADOR, :DATA_VENCIMENTO, :DATA_PAGAMENTO, :TABELA_RELACIONADA, :COD_TABELA_RELACIONADA,
            :COD_TIPO_COBRANCA, :COMPETENCIA, :COMPLEMENTAR do
    begin
       /*============== pega a primeira guia e exclui as outras ================= */
       SELECT first 1 ARRECADACAO.COD_ARRECADACAO
       from arrecadacao
       where ARRECADACAO.DATA_VENCIMENTO = :DATA_VENCIMENTO
        -- and ARRECADACAO.DATA_PAGAMENTO  = :DATA_PAGAMENTO
         and ARRECADACAO.TABELA_RELACIONADA = :TABELA_RELACIONADA
         and ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
         and ARRECADACAO.COD_TIPO_COBRANCA     = :COD_TIPO_COBRANCA
         and ARRECADACAO.COMPETENCIA           = :COMPETENCIA
         and ARRECADACAO.COMPLEMENTAR          = :COMPLEMENTAR
       into :COD_ARRECADACAO;

       update ARRECADACAO set ARRECADACAO.EXCLUIDA = 'T'
                            , ARRECADACAO.OBSERVACOES_SISTEMA = 'Excluida por existir  mais de um lancamento com mesma competencia e complementar'
       where ARRECADACAO.DATA_VENCIMENTO = :DATA_VENCIMENTO
        -- and ARRECADACAO.DATA_PAGAMENTO  = :DATA_PAGAMENTO
         and ARRECADACAO.TABELA_RELACIONADA = :TABELA_RELACIONADA
         and ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
         and ARRECADACAO.COD_TIPO_COBRANCA     = :COD_TIPO_COBRANCA
         and ARRECADACAO.COMPETENCIA           = :COMPETENCIA
         and ARRECADACAO.COMPLEMENTAR          = :COMPLEMENTAR
         and ARRECADACAO.COD_ARRECADACAO <> :COD_ARRECADACAO;

    end

  end
  suspend;
end^


ALTER PROCEDURE ENDERECO (
    TABELA VARCHAR(80),
    CONDICAO_SQL_WHERE VARCHAR(10000))
RETURNS (
    ENDERECO VARCHAR(500),
    NOME VARCHAR(200),
    QTE INTEGER,
    STATUS VARCHAR(1),
    CNPJ VARCHAR(14),
    CIDADE VARCHAR(80),
    CODIGO INTEGER,
    NASCIMENTO DATE)
AS
declare variable SQL varchar(1000);
declare variable TIPO varchar(80);
declare variable LOGRADOURO varchar(80);
declare variable NUMERO varchar(80);
declare variable COMPLEMENTO varchar(80);
declare variable BAIRRO varchar(80);
declare variable CEP char(8);
declare variable UF char(2);
BEGIN
    /*=================================
       Seleciona os dados de endereço
    =================================*/
   SQL = '';
   if (:TABELA = 'AGENDA_TELEFONICA') then
   begin
       SQL = :SQL || ' SELECT NOME ';
       SQL = :SQL || '        , CODIGO';
       SQL = :SQL || '        , TIPO';
       SQL = :SQL || '        , TELEFONE1';
       SQL = :SQL || '        , ENDERECO_TIPO ';
       SQL = :SQL || '        , ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ENDERECO_NUMERO';
       SQL = :SQL || '        , ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ENDERECO_BAIRRO';
       SQL = :SQL || '        , ENDERECO_CIDADE';
       SQL = :SQL || '        , ENDERECO_UF';
       SQL = :SQL || '        , ENDERECO_CEP';
       SQL = :SQL || '        , CODIGO';
       SQL = :SQL || '        , ANIVERSARIO';
       SQL = :SQL || ' FROM AGENDA_TELEFONICA ';
   end
   if (:TABELA = 'ASSOCIADO') then
   begin
       SQL = :SQL || ' SELECT ASSOCIADO.NOME ';
       SQL = :SQL || '        , ASSOCIADO.CODIGO';
       SQL = :SQL || '        , EMPRESA.status';
       SQL = :SQL || '        , EMPRESA.CNPJ';
       SQL = :SQL || '        , ASSOCIADO.ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , ASSOCIADO.ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ASSOCIADO.ENDERECO_NUMERO';
       SQL = :SQL || '        , ASSOCIADO.ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ASSOCIADO.BAIRRO';
       SQL = :SQL || '        , ASSOCIADO.CIDADE';
       SQL = :SQL || '        , ASSOCIADO.UF';
       SQL = :SQL || '        , ASSOCIADO.CEP';
       SQL = :SQL || '        , ASSOCIADO.CODIGO';
       SQL = :SQL || '        , ASSOCIADO.NASCIMENTO';
       SQL = :SQL || ' FROM ASSOCIADO ';
       SQL = :SQL || ' LEFT JOIN EMPRESA ON (ASSOCIADO.EMPRESA = EMPRESA.CNPJ)';
   end
   if (:TABELA = 'COMERCIARIO') then
   begin
       SQL = :SQL || ' SELECT COMERCIARIO.NOME ';
       SQL = :SQL || '        , COMERCIARIO.CODIGO';
       SQL = :SQL || '        , EMPRESA.status';
       SQL = :SQL || '        , EMPRESA.CNPJ';
       SQL = :SQL || '        , COMERCIARIO.ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , COMERCIARIO.ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , COMERCIARIO.ENDERECO_NUMERO';
       SQL = :SQL || '        , COMERCIARIO.ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , COMERCIARIO.BAIRRO';
       SQL = :SQL || '        , COMERCIARIO.CIDADE';
       SQL = :SQL || '        , COMERCIARIO.UF';
       SQL = :SQL || '        , COMERCIARIO.CEP';
       SQL = :SQL || '        , COMERCIARIO.CODIGO';
       SQL = :SQL || '        , COMERCIARIO.NASCIMENTO';
       SQL = :SQL || ' FROM COMERCIARIO ';
       SQL = :SQL || ' LEFT JOIN EMPRESA ON (COMERCIARIO.EMPRESA = EMPRESA.CNPJ)';
   end
   if (:TABELA = 'CONTABILIDADE') then
   begin
       SQL = :SQL || ' SELECT RAZAOSOCIAL ';
       SQL = :SQL || '        , QTE_EMPRESAS ';
       SQL = :SQL || '        , STATUS ';
       SQL = :SQL || '        , CNPJ ';
       SQL = :SQL || '        , ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ENDERECO_NUMERO';
       SQL = :SQL || '        , ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ENDERECO_BAIRRO';
       SQL = :SQL || '        , ENDERECO_CIDADE';
       SQL = :SQL || '        , ENDERECO_UF';
       SQL = :SQL || '        , ENDERECO_CEP';
       SQL = :SQL || '        , QTE_EMPRESAS';
       SQL = :SQL || '        , DATACADASTRO';
       SQL = :SQL || ' FROM CONTABILIDADE ';
   end
   if (:TABELA = 'EMPRESA') then
   begin
       SQL = :SQL || ' SELECT RAZAOSOCIAL ';
       SQL = :SQL || '        , NUMERO_EMPREGADOS ';
       SQL = :SQL || '        , STATUS ';
       SQL = :SQL || '        , CNPJ ';
       SQL = :SQL || '        , ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ENDERECO_NUMERO';
       SQL = :SQL || '        , ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ENDERECO_BAIRRO';
       SQL = :SQL || '        , ENDERECO_CIDADE';
       SQL = :SQL || '        , ENDERECO_UF';
       SQL = :SQL || '        , ENDERECO_CEP';
       SQL = :SQL || '        , 0';
       SQL = :SQL || '        , DATA_CADASTRO';
       SQL = :SQL || ' FROM EMPRESA ';
   end

   if (:TABELA = 'ENTIDADE_SINDICAL_INTEGRANTES') then
   begin

       SQL = :SQL || ' SELECT ENTIDADE_SINDICAL_INTEGRANTES.NOME ';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.NUMERO_EMPREGADOS ';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.STATUS ';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.CNPJ ';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_NUMERO';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_BAIRRO';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_CIDADE';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_UF';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.ENDERECO_CEP';
       SQL = :SQL || '        , 0';
       SQL = :SQL || '        , ENTIDADE_SINDICAL.DATA_CADASTRO';
       SQL = :SQL || ' FROM ENTIDADE_SINDICAL ';
       SQL = :SQL || '   inner join ENTIDADE_SINDICAL_INTEGRANTES on ENTIDADE_SINDICAL_INTEGRANTES.COD_ENTIDADE_SINDICAL = ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL';
   end


   if (:TABELA = 'ENTIDADE_SINDICAL') then
   begin
       SQL = :SQL || ' SELECT RAZAOSOCIAL ';
       SQL = :SQL || '        , NUMERO_EMPREGADOS ';
       SQL = :SQL || '        , STATUS ';
       SQL = :SQL || '        , CNPJ ';
       SQL = :SQL || '        , ENDERECO_TIPOENDERECO ';
       SQL = :SQL || '        , ENDERECO_LOGRADOURO';
       SQL = :SQL || '        , ENDERECO_NUMERO';
       SQL = :SQL || '        , ENDERECO_COMPLEMENTO';
       SQL = :SQL || '        , ENDERECO_BAIRRO';
       SQL = :SQL || '        , ENDERECO_CIDADE';
       SQL = :SQL || '        , ENDERECO_UF';
       SQL = :SQL || '        , ENDERECO_CEP';
       SQL = :SQL || '        , 0';
       SQL = :SQL || '        , DATA_CADASTRO';
       SQL = :SQL || ' FROM ENTIDADE_SINDICAL ';
   end

   if (:CONDICAO_SQL_WHERE IS NOT NULL) then
      SQL = :SQL || ' ' || :CONDICAO_SQL_WHERE;

  FOR
     EXECUTE STATEMENT :SQL
     into :nome,:qte,:STATUS,:CNPJ,:TIPO,:LOGRADOURO,:NUMERO,:COMPLEMENTO,:BAIRRO,:CIDADE,:UF,:CEP,:CODIGO,:NASCIMENTO do
     begin
        ENDERECO  = '';

        tipo        = COALESCE(:tipo        , '');
        logradouro  = COALESCE(:logradouro  , '');
        numero      = COALESCE(:numero      , '');
        complemento = COALESCE(:complemento , '');

        bairro      = COALESCE(:bairro , '');
        cep         = COALESCE(:cep    , '');
        cidade      = COALESCE(:cidade , '');
        uf          = COALESCE(:uf     , '');


        ENDERECO=logradouro||' '||
        numero||' ' ||
        complemento||' - ' ||
        bairro||'
' ||
        SUBSTRING(cep FROM 1 FOR 2)||'.'||
           SUBSTRING(CEP FROM 3 FOR 3)||'-'||
           SUBSTRING(CEP FROM 6 FOR 3)||' '||
           cidade||'-'||
           uf;

        SUSPEND;
     end

  --SUSPEND;
END^


ALTER PROCEDURE FECHAMENTO_CAIXA (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    FILIAL INTEGER)
RETURNS (
    MOVIMENTO_CAIXA NUMERIC(15,0),
    DESCRICAO_PAGAMENTO VARCHAR(5000),
    COD_USUARIO INTEGER,
    NOME_USUARIO VARCHAR(80),
    COD_FILIAL INTEGER,
    NOME_FILIAL VARCHAR(80),
    FORMA_PAGOU VARCHAR(80),
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    CODIGO_GUIA NUMERIC(15,0),
    ENTRADA_SAIDA VARCHAR(80),
    VALOR_AVISTA NUMERIC(15,2),
    VALOR_APRAZO NUMERIC(15,2),
    CAIXA_BANCO VARCHAR(1),
    OBS VARCHAR(5000))
AS
declare variable A_VISTA varchar(1);
begin

   obs = '';
-- Lista o recebimento de Plano Básico
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'PLANO BÁSICO '|| plano_basico.complementar || '/' ||
                         plano_basico.COMPETENCIA ||' '||
                         EMPRESA.CNPJ || '-' ||
                         EMPRESA.razaosocial,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       formapagamento.descricao,
       plano_basico.data_baixa,
       plano_basico.VALOR_BAIXA,
       plano_basico.codigo,
       'CONTRIBUIÇÃO PLANO BÁSICO',
       'ENTRADA',
       formapagamento.A_VISTA,
       Formapagamento.caixa_banco

       , usuario.codigo

  from plano_basico
  inner join formapagamento on (plano_basico.cod_forma_pagamento =  formapagamento.codigo )
  left join caixa_movimentacao on (plano_basico.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario =  usuario.codigo )
  left join EMPRESA on (PLANO_BASICO.EMPRESA = EMPRESA.CNPJ )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where plano_basico.data_baixa BETWEEN :DATA_INICIO and :DATA_FIM
    and plano_basico.movimento_caixa is not null
    AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO, :NOME_USUARIO, :cod_filial, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA, :CAIXA_BANCO,:COD_USUARIO do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end


-- Lista o recebimento de Assistencial Anual
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'ASSISTENCIAL ANUAL '|| SUBSTRING(ASSISTENCIAL.COMPETENCIA FROM 1 FOR 4) ||' '||EMPRESA.CNPJ || '-' || EMPRESA.razaosocial,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       formapagamento.descricao,
       ASSISTENCIAL.data_baixa,
       ASSISTENCIAL.VALOR_BAIXA,
       ASSISTENCIAL.codigo,
       'CONTRIBUIÇÃO ASSISTENCIAL',
       'ENTRADA',
       FORMAPAGAMENTO.A_VISTA,
       Formapagamento.caixa_banco,
       usuario.CODIGO
  from ASSISTENCIAL
  inner join formapagamento on (ASSISTENCIAL.cod_forma_pagamento =  formapagamento.codigo )
  left join caixa_movimentacao on (ASSISTENCIAL.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join EMPRESA on (assistencial.EMPRESA = EMPRESA.CNPJ )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where ASSISTENCIAL.data_baixa BETWEEN :DATA_INICIO and :DATA_FIM and ASSISTENCIAL.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO, :NOME_USUARIO, :cod_filial, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA, :CAIXA_BANCO,:COD_USUARIO do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end

-- Lista o recebimento de Assistencial Mensal
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'ASSISTENCIAL MENSAL '||CONFEDERATIVA.complementar  || '/' || CONFEDERATIVA.COMPETENCIA ||' '||EMPRESA.CNPJ || '-' || EMPRESA.razaosocial,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       formapagamento.descricao,
       CONFEDERATIVA.data_baixa,
       CONFEDERATIVA.VALOR_BAIXA,
       CONFEDERATIVA.codigo,
       'CONTRIBUIÇÃO ASSISTENCIAL MENSAL',
       'ENTRADA',
       FORMAPAGAMENTO.A_VISTA,
       Formapagamento.caixa_banco,
       usuario.CODIGO

  from CONFEDERATIVA
  inner join formapagamento on (CONFEDERATIVA.cod_forma_pagamento =  formapagamento.codigo )
  left join caixa_movimentacao on (CONFEDERATIVA.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join EMPRESA on (CONFEDERATIVA.EMPRESA = EMPRESA.CNPJ )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where CONFEDERATIVA.data_baixa BETWEEN :DATA_INICIO and :DATA_FIM and CONFEDERATIVA.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO, :NOME_USUARIO, :cod_filial, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA, :CAIXA_BANCO,:COD_USUARIO do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end

-- Lista o recebimento de Outras Receitas - Recibos Avulsos
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'OUTRAS RECEITAS '|| ' REFERENTE:'|| recibo_avulso.referente || ' ' || recibo_avulso.recebido_de,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       '',
       recibo_avulso.datA,
       recibo_avulso.VALOR,
       recibo_avulso.codigo,
       'OUTRAS RECEITAS',
       'ENTRADA',
       FORMAPAGAMENTO.A_VISTA,
       Formapagamento.caixa_banco,
       USUARIO.CODIGO
  from recibo_avulso
  left join caixa_movimentacao on (recibo_avulso.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join FORMAPAGAMENTO on (recibo_avulso.COD_FORMA_PAGAMENTO =  FORMAPAGAMENTO.CODIGO )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where recibo_avulso.data BETWEEN :DATA_INICIO and :DATA_FIM and recibo_avulso.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO, :NOME_USUARIO, :cod_filial, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA, :CAIXA_BANCO,:COD_USUARIO do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end

-- Lista as Saídas de Caixa
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'SAÍDA DE CAIXA'|| ' REFERENTE:'|| CAIXA_SAIDA.DESCRICAO,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       '',
       CAIXA_SAIDA.DATA_SAIDA,
       CAIXA_SAIDA.VALOR,
       CAIXA_SAIDA.CODIGO,
       'SAÍDA DE CAIXA',
       'SAÍDA',
       usuario.CODIGO
  from CAIXA_SAIDA
  left join caixa_movimentacao on (CAIXA_SAIDA.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where CAIXA_SAIDA.DATA_SAIDA BETWEEN :DATA_INICIO and :DATA_FIM and CAIXA_SAIDA.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO, :NOME_USUARIO, :cod_filial, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA, :COD_USUARIO do
  begin
     VALOR_AVISTA=valor_pagamento;
     VALOR_APRAZO=0;
    suspend;
  END

-- Listar Entrada de cheques PRÉ-DATADOS
  for
  select
       0,
       'ENTRADA - CHEQUE PRÉ'||' Nº.' ||cadastro_cheque.NUMERO  || ' NOME:' ||cadastro_cheque.NOME ||' BOM PARA:' || cadastro_cheque.BOM_PARA,
       usuario.codigo,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       'ENTRADA - CHEQUE PRÉ',
       cadastro_cheque.DATA_ENTRADA,
       cadastro_cheque.VALOR,
       cadastro_cheque.CODIGO,
       'ENTRADA - CHEQUE PRÉ',
       'ENTRADA - PRÉ'
  from cadastro_cheque
  left join usuario on (cadastro_cheque.USUARIO = usuario.codigo )
  left join filial on (cadastro_cheque.filial = filial.cod_filial)
  where cadastro_cheque.DATA_ENTRADA BETWEEN :DATA_INICIO and :DATA_FIM AND cadastro_cheque.BOM_PARA IS NOT NULL AND cadastro_cheque.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=valor_pagamento;
    suspend;
  end
-- Listar os cheque-pré datados para depósito
  for
  select
       0,
       'DEPÓSITO - CHEQUE PRÉ '||' Nº.' ||cadastro_cheque.NUMERO  || ' NOME:' ||cadastro_cheque.NOME ||' DEPOSITADO EM:' || cadastro_cheque.DATA_DEPOSITO,
       usuario.codigo,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       'DEPÓSITO - CHEQUE PRÉ',
       cadastro_cheque.DATA_DEPOSITO,
       cadastro_cheque.VALOR,
       cadastro_cheque.CODIGO,
       'DEPÓSITO - CHEQUE PRÉ',
       'SAÍDA'
  from cadastro_cheque
  left join usuario on (cadastro_cheque.USUARIO = usuario.codigo )
  left join filial on (cadastro_cheque.filial = filial.cod_filial)
  where cadastro_cheque.DATA_DEPOSITO BETWEEN :DATA_INICIO and :DATA_FIM and cadastro_cheque.BOM_PARA is NOT null AND cadastro_cheque.FILIAL=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA do
  begin
     VALOR_AVISTA=VALOR_PAGAMENTO;
     VALOR_APRAZO=0;
    suspend;
  end

-- Listar os cheques para Depósito que não foram PRÉ-DATADOS
  for
  select
       0,
       'DEPÓSITO - CHEQUE À VISTA'||' Nº.' ||cadastro_cheque.NUMERO  || ' NOME:' ||cadastro_cheque.NOME ||' DEPOSITADO EM:' || cadastro_cheque.DATA_DEPOSITO,
       usuario.codigo,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       'DEPÓSITO - CHEQUE À VISTA',
       cadastro_cheque.DATA_DEPOSITO,
       cadastro_cheque.VALOR,
       cadastro_cheque.CODIGO,
       'DEPÓSITO - CHEQUE À VISTA',
       'SAÍDA'
  from cadastro_cheque
  left join usuario on (cadastro_cheque.USUARIO = usuario.codigo )
  left join filial on (cadastro_cheque.filial = filial.cod_filial)
  where cadastro_cheque.DATA_DEPOSITO BETWEEN :DATA_INICIO and :DATA_FIM and cadastro_cheque.BOM_PARA is null AND cadastro_cheque.FILIAL=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA do
  begin
     VALOR_AVISTA=VALOR_PAGAMENTO;
     VALOR_APRAZO=0;
    suspend;
  end

-- Lista os recebimentos dos serviços
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'SERVIÇOS '|| lancamentos_servicos.codigo || ' BENEFICIÁRIO:' || lancamentos_servicos.nome_beneficiario ||' ASSOCIADO:' || lancamentos_servicos.cod_associado || '-' || associado.nome ,
       usuario.codigo,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       formapagamento.descricao,
       pagamento_servico.data_baixa,
       pagamento_servico.valor_baixa,
       lancamentos_servicos.codigo,
       'RECEBIMENTO DE SERVIÇOS',
       'ENTRADA',
       FORMAPAGAMENTO.A_VISTA,
       Formapagamento.caixa_banco
  from pagamento_servico
  left join lancamentos_servicos on (pagamento_servico.cod_lancamento_servico = lancamentos_servicos.codigo)
  inner join formapagamento on (pagamento_servico.cod_forma_pagamento =  formapagamento.codigo )
  left join caixa_movimentacao on (pagamento_servico.movimento_caixa =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join ASSOCIADO on (lancamentos_servicos.COD_ASSOCIADO = ASSOCIADO.codigo )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where pagamento_servico.data_baixa BETWEEN :DATA_INICIO and :DATA_FIM and pagamento_servico.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA,:CAIXA_BANCO do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end

-- Lista os recebimentos dos serviços
  for
  select
       caixa_movimentacao.cod_caixa_movimentacao,
       'SERVIÇOS GENÉRICOS'||' ' ||LANCAMENTOS_SERVICOS_GENERICO.codigo || ' BENEFICIÁRIO:' || LANCAMENTOS_SERVICOS_GENERICO.nome_beneficiario,
       usuario.codigo,
       usuario.nome,
       filial.cod_filial,
       filial.apelido,
       formapagamento.descricao,
       PAGAMENTO_SERVICO_GENERICO.data_baixa,
       PAGAMENTO_SERVICO_GENERICO.valor_baixa,
       LANCAMENTOS_SERVICOS_GENERICO.codigo,
       'RECEBIMENTO DE SERVIÇOS GENÉRICOS',
       'ENTRADA',
       FORMAPAGAMENTO.A_VISTA,
       Formapagamento.caixa_banco

  from PAGAMENTO_SERVICO_GENERICO
  left join LANCAMENTOS_SERVICOS_GENERICO on (PAGAMENTO_SERVICO_GENERICO.CODIGO_LANCAMENTO_SERV_GENERICO = LANCAMENTOS_SERVICOS_GENERICO.codigo)
  inner join formapagamento on (PAGAMENTO_SERVICO_GENERICO.COD_FORMA_PAGAMENTO =  formapagamento.codigo )
  left join caixa_movimentacao on (PAGAMENTO_SERVICO_GENERICO.MOVIMENTO_CAIXA =  caixa_movimentacao.cod_caixa_movimentacao )
  left join usuario on (caixa_movimentacao.usuario = usuario.codigo )
  left join COMERCIARIO on (LANCAMENTOS_SERVICOS_GENERICO.COD_COMERCIARIO = COMERCIARIO.CODIGO )
  left join filial on (caixa_movimentacao.filial = filial.cod_filial)
  where PAGAMENTO_SERVICO_GENERICO.data_baixa BETWEEN :DATA_INICIO and :DATA_FIM and PAGAMENTO_SERVICO_GENERICO.movimento_caixa is not null AND caixa_movimentacao.filial=:FILIAL
  into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL, :NOME_FILIAL, :FORMA_PAGOU,:DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA, :tipo_guia, :ENTRADA_SAIDA,:A_VISTA,:caixa_banco do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end

-- Lista os recebimentos de Mensalidade
  for
     select
          caixa_movimentacao.COD_CAIXA_MOVIMENTACAO,
   
          'MENSALIDADE '|| coalesce( ARRECADACAO.COMPLEMENTAR , '') || '/' ||
                           coalesce( ARRECADACAO.COMPETENCIA  , '')|| ' ' ||
                           coalesce( associado.CODIGO         , '')|| '-' ||
                           coalesce( associado.nome           , ''),
   
          usuario.codigo,
          usuario.nome,
          filial.cod_filial,
          filial.apelido,
          formapagamento.descricao,
          ARRECADACAO.DATA_PAGAMENTO,
          ARRECADACAO.VALOR_PAGAMENTO,
          ARRECADACAO.COD_ARRECADACAO,
          'MENSALIDADE DE SÓCIOS',
          'ENTRADA',
          FORMAPAGAMENTO.A_VISTA,
          Formapagamento.caixa_banco,
          ARRECADACAO.OBS_PAGAMENTO
     from ARRECADACAO
     inner join formapagamento on FORMAPAGAMENTO.CODIGO = ARRECADACAO.COD_FORMA_PAGAMENTO
     left  join caixa_movimentacao on caixa_movimentacao.cod_caixa_movimentacao = ARRECADACAO.COD_CAIXA_MOVIMENTACAO
     left  join usuario on caixa_movimentacao.usuario = usuario.codigo
     left  join ASSOCIADO on ASSOCIADO.codigo = ARRECADACAO.COD_TABELA_RELACIONADA
     left  join filial on caixa_movimentacao.filial = filial.cod_filial
   
     where ARRECADACAO.DATA_PAGAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
       and ARRECADACAO.COD_CAIXA_MOVIMENTACAO is not null
       AND caixa_movimentacao.filial= :FILIAL
       and ARRECADACAO.TABELA_RELACIONADA = 'ASSOCIADO'
     into :MOVIMENTO_CAIXA, :DESCRICAO_PAGAMENTO,:COD_USUARIO, :NOME_USUARIO,:COD_FILIAL,
          :NOME_FILIAL, :FORMA_PAGOU, :DATA_PAGAMENTO, :valor_pagamento, :CODIGO_GUIA,
          :tipo_guia, :ENTRADA_SAIDA, :A_VISTA, :caixa_banco, :OBS do
  begin
     VALOR_AVISTA=0;
     VALOR_APRAZO=0;
     if (A_VISTA = 'T') then
      VALOR_AVISTA = valor_pagamento;
     else
     if (A_VISTA = 'F') then
      VALOR_APRAZO = valor_pagamento;
    suspend;
  end
end^


ALTER PROCEDURE PROC_AJSUTA_IMPORTACA_CAIXA
RETURNS (
    REFERENCIA_ASSOCIATIVA CHAR(6),
    COD_ARRECADACAO INTEGER,
    COMPLEMENTAR CHAR(2),
    COMPETENCIA CHAR(4),
    ASSOCIADO INTEGER,
    VALOR_ARRECADACAO NUMERIC(15,2),
    COD_ASSOCIATIVA INTEGER,
    MOVIMENTO_CAIXA NUMERIC(15,0))
AS
begin
  /*============================
    a importacao das guias associativas para a tabela de arrecadacao ficaram sem
    a informacao do movimento do caixa
    essa procedure faz este ajuste..
  =============================*/

  for
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.VALOR_PAGAMENTO

    from ARRECADACAO
    where arrecadacao.OBSERVACOES_SISTEMA = 'Importação de guias associativas. Mensalidades pagas sem informação de boleto'
      and ARRECADACAO.COD_CAIXA_MOVIMENTACAO is NULL
      and arrecadacao.DATA_PAGAMENTO BETWEEN '11.02.2014' and '11.02.2014'
    INTO :COD_ARRECADACAO , :ASSOCIADO, :COMPETENCIA, :COMPLEMENTAR, :VALOR_ARRECADACAO DO
    begin
       if (:COMPLEMENTAR <= 9 ) then
          COMPLEMENTAR = '0'||:COMPLEMENTAR;

       REFERENCIA_ASSOCIATIVA = :COMPETENCIA||:COMPLEMENTAR;


     FOR
         select associativa.CODIGO
               , associativa.MOVIMENTO_CAIXA
          from ASSOCIATIVA
          where associativa.REFERENCIA = :REFERENCIA_ASSOCIATIVA
             and associativa.ASSOCIADO = :ASSOCIADO
             and associativa.MOVIMENTO_CAIXA is not NULL
          INTO :COD_ASSOCIATIVA, :MOVIMENTO_CAIXA do
      begin
         update arrecadacao set ARRECADACAO.COD_CAIXA_MOVIMENTACAO = :MOVIMENTO_CAIXA
         where arrecadacao.COD_ARRECADACAO = :COD_ARRECADACAO;


      end
    end

end^


ALTER PROCEDURE PROC_AJUSTA_BOLETOS_ASSOCIATIVA
RETURNS (
    COD_ARRECADACAO INTEGER,
    DATA_PGTO TIMESTAMP,
    COMPLEMENTAR INTEGER,
    COMPETENCIA INTEGER,
    REFERENCIA_ASSOCIATIVA VARCHAR(10),
    MATRICULA INTEGER,
    MOVIEMNTO_CAIXA INTEGER)
AS
begin
   for
      select ASSOCIATIVA.REFERENCIA
          , ASSOCIATIVA.ASSOCIADO
          , ASSOCIATIVA.MOVIMENTO_CAIXA
      from ASSOCIATIVA
      where associativa.DATA > '01.01.2008'
      into :REFERENCIA_ASSOCIATIVA , :MATRICULA, :MOVIEMNTO_CAIXA do
      begin
         COMPETENCIA = SUBSTRING(:REFERENCIA_ASSOCIATIVA from 1 for 4);
         COMPLEMENTAR = SUBSTRING(:REFERENCIA_ASSOCIATIVA from 5 for 2);

         COD_ARRECADACAO = 0;

         for
            select ARRECADACAO.COD_ARRECADACAO
                , ARRECADACAO.DATA_PAGAMENTO
            from ARRECADACAO
            where ARRECADACAO.TABELA_RELACIONADA = 'ASSOCIADO'
              and ARRECADACAO.COD_TABELA_RELACIONADA = :MATRICULA
              and ARRECADACAO.COMPETENCIA = :COMPETENCIA
              and ARRECADACAO.COMPLEMENTAR = :COMPLEMENTAR
              and ARRECADACAO.DATA_PAGAMENTO is null
            into :COD_ARRECADACAO, :DATA_PGTO do
         begin
            if (COD_ARRECADACAO > 0 ) then
            begin
               update ARRECADACAO set ARRECADACAO.OBS_PAGAMENTO = 'Ajuste do sistema. Existia pagamento de mensalidades associativas pagas e boletos na mesma competência em aberto'
                                    , ARRECADACAO.DATA_PAGAMENTO = '10.' ||:COMPLEMENTAR ||'.'|| :COMPETENCIA
                                    , ARRECADACAO.VALOR_PAGAMENTO = 0
                                    , ARRECADACAO.COD_USUARIO_PAGAMENTO = 1
                                    , ARRECADACAO.OBSERVACOES_SISTEMA = 'Ajuste de pagamento de boleto com mensalidades'
                                    , ARRECADACAO.FLAG = 'AJ'
                                    , ARRECADACAO.COD_CAIXA_MOVIMENTACAO = :MOVIEMNTO_CAIXA
               where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO;
               suspend;
            end
         end
      end
end^


ALTER PROCEDURE PROC_AJUSTA_ERROPROC_PROC
RETURNS (
    COD_PROCESSAMENTO INTEGER,
    COD_ERRO_PROCESSAMENTO INTEGER,
    ARQUIVO VARCHAR(80))
AS
begin
  /*=========================================== 
   Criar estes indices para o processe de ajuste ficar mais rapido
   mesmo assim vai demorar alguns minutos pois as tabelas sao mto grande

  CREATE INDEX ERRO_PROESSAMENTO_GUIAS_ARQUIV
  ON ERRO_PROESSAMENTO_GUIAS (ARQUIVO);


  CREATE INDEX PROCESSAMENTO_IDX1
  ON PROCESSAMENTO (ARQUIVO);

 =============================================*/



    /*=========== apaga as guias que esta com .bxd no nome do arquivo. ============*/
   for
     select PROCESSAMENTO.ARQUIVO
         , PROCESSAMENTO.codigo
     from PROCESSAMENTO
     where processamento.ARQUIVO like '%bxd%'
     into :ARQUIVO , :cod_processamento do

   begin
      delete from ERRO_PROESSAMENTO_GUIAS where ERRO_PROESSAMENTO_GUIAS.ARQUIVO = :ARQUIVO;
      delete from processamento_detalhes where processamento_detalhes.cod_processamento = :cod_processamento;
   end

   delete from PROCESSAMENTO
   where processamento.ARQUIVO like '%bxd%';

    /*============ ajusta o codigo do processamento da tabela de erros ============== */
   for
     select erro_proessamento_guias.arquivo
     from erro_proessamento_guias
     where erro_proessamento_guias.cod_processamento not in (select processamento.codigo
                                                             from processamento )
     and erro_proessamento_guias.arquivo <> 'REPROCESSAMENTO'

  into :ARQUIVO do
  begin
     cod_processamento = 0 ;

     select first 1 processamento.codigo
     from processamento
     where processamento.arquivo = :arquivo
     into :cod_processamento;

     if (cod_processamento <> 0) then
     begin
        update erro_proessamento_guias set erro_proessamento_guias.cod_processamento = :cod_processamento
        where erro_proessamento_guias.arquivo = :arquivo ;
     end

  end

end^


ALTER PROCEDURE PROC_AJUSTA_IMPORTA_GUIAS (
    COD_TIPO_COBRANCA_SINDICAL INTEGER,
    COD_TIPO_COBRANCA_FAA_MENSAL INTEGER,
    COD_TIPO_COBRANCA_FAA_ANUAL INTEGER,
    COD_TIPO_COBRANCA_ASSOCIATIVA INTEGER,
    COD_TIPO_COBRANCA_PLANO_BASICO INTEGER)
RETURNS (
    TIPO_COBRANCA VARCHAR(80),
    NOSSO_NUMERO VARCHAR(30),
    COD_ARRECADACAO INTEGER)
AS
declare variable CODIGO integer;
declare variable DATA_EMISSAO date;
declare variable EMPRESA varchar(14);
declare variable DATA_VENCIMENTO date;
declare variable DATA_BAIXA date;
declare variable COMPETENCIA integer;
declare variable COMPLEMENTAR integer;
declare variable VALOR numeric(15,2);
declare variable MULTA_JUROS numeric(15,2);
declare variable VALOR_BAIXA numeric(15,2);
declare variable USUARIO_EMISSAO integer;
declare variable USUARIO_BAIXA integer;
declare variable OBS_BAIXA varchar(5000);
declare variable TARIFA numeric(15,2);
declare variable REPASSE_FEDERACAO numeric(15,2);
declare variable REPASSE_CONFEDERACAO numeric(15,2);
declare variable FORMA_BAIXA varchar(80);
declare variable COD_FORMA_PAGAMENTO integer;
declare variable COD_CONVENIO_COBRANCA integer;
declare variable COD_TIPO_COBRANCA integer;
declare variable COD_PADRAO_BANCARIO integer;
begin
  /*================================
   ================================== */

   SELECT COALESCE (MAX (arrecadacao.cod_arrecadacao) , 0 ) FROM arrecadacao
   INTO :cod_arrecadacao;


/*=============== GUIAS SINDICAIS =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_SINDICAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select sindical.codigo
          , sindical.empresa
          , sindical.data_emissao
          , sindical.data_vencimento
          , sindical.data_baixa
          , sindical.competencia
          , sindical.complementar
          , sindical.valor
          , sindical.multa_juros
          , sindical.valor_baixa
          , sindical.usuario_emissao
          , sindical.usuario_baixa
          , sindical.obs_baixa
          , sindical.tarifa
          , sindical.repasse_federacao
          , sindical.repasse_confederacao
          , sindical.forma_baixa
          , sindical.cod_forma_pagamento
      from sindical
      where SINDICAL.CODIGO not in ( SELECT ARRECADACAO.SEU_NUMERO
                                     from ARRECADACAO
                                     where ARRECADACAO.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
                                    )

      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;
         NOSSO_NUMERO = :codigo;
         TIPO_COBRANCA = 'SINDICAL';

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO - proc de ajuste',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor);

        SUSPEND;
      end

/*=============== GUIAS confederativa FAA MENSAL =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_FAA_MENSAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select CONFEDERATIVA.codigo
          , CONFEDERATIVA.EMPRESA
          , CONFEDERATIVA.DATA_EMISSAO
          , CONFEDERATIVA.DATA_VENCIMENTO
          , CONFEDERATIVA.DATA_BAIXA
          , CONFEDERATIVA.COMPETENCIA
          , CONFEDERATIVA.COMPLEMENTAR
          , CONFEDERATIVA.VALOR
          , CONFEDERATIVA.MULTA_JUROS
          , CONFEDERATIVA.VALOR_BAIXA
          , CONFEDERATIVA.USUARIO_EMISSAO
          , CONFEDERATIVA.USUARIO_BAIXA
          , CONFEDERATIVA.OBS_BAIXA
          , CONFEDERATIVA.TARIFA
          , 0
          , 0
          , CONFEDERATIVA.FORMA_BAIXA
          , CONFEDERATIVA.COD_FORMA_PAGAMENTO
      from CONFEDERATIVA
      where CONFEDERATIVA.CODIGO not in ( SELECT ARRECADACAO.SEU_NUMERO
                                          from ARRECADACAO
                                          where ARRECADACAO.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
                                         )
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;
         NOSSO_NUMERO = :codigo;
         TIPO_COBRANCA = 'FAA MENSAL';

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO - proc de ajuste',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

         SUSPEND;
      end

/*=============== GUIAS ASSISTENCIAL FAA ANUAL =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_FAA_ANUAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO

  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select ASSISTENCIAL.codigo
          , ASSISTENCIAL.EMPRESA
          , ASSISTENCIAL.DATA_EMISSAO
          , ASSISTENCIAL.DATA_VENCIMENTO
          , ASSISTENCIAL.DATA_BAIXA
          , ASSISTENCIAL.COMPETENCIA
          , ASSISTENCIAL.COMPLEMENTAR
          , ASSISTENCIAL.VALOR
          , ASSISTENCIAL.MULTA_JUROS
          , ASSISTENCIAL.VALOR_BAIXA
          , ASSISTENCIAL.USUARIO_EMISSAO
          , ASSISTENCIAL.USUARIO_BAIXA
          , ASSISTENCIAL.OBS_BAIXA
          , ASSISTENCIAL.TARIFA
          , 0
          , 0
          , ASSISTENCIAL.FORMA_BAIXA
          , ASSISTENCIAL.COD_FORMA_PAGAMENTO
      from ASSISTENCIAL
      where ASSISTENCIAL.CODIGO not in ( SELECT ARRECADACAO.SEU_NUMERO
                                          from ARRECADACAO
                                          where ARRECADACAO.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
                                         )
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;
         NOSSO_NUMERO = :codigo;
         TIPO_COBRANCA = 'FAA ANUAL';

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO , OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO - proc de ajuste',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

         SUSPEND;
      end

/*=============== GUIAS SOCIAL - ASSOCIATIVAS =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_ASSOCIATIVA;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO

  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select SOCIAL.CODIGO
          , SOCIAL.EMPRESA
          , SOCIAL.DATA_EMISSAO
          , SOCIAL.DATA_VENCIMENTO
          , SOCIAL.DATA_BAIXA
          , SOCIAL.COMPETENCIA
          , SOCIAL.COMPLEMENTAR
          , SOCIAL.VALOR
          , SOCIAL.MULTA_JUROS
          , SOCIAL.VALOR_BAIXA
          , SOCIAL.USUARIO_EMISSAO
          , SOCIAL.USUARIO_BAIXA
          , ''
          , 0
          , 0
          , 0
          , ''
          , SOCIAL.COD_FORMA_PAGAMENTO
      from SOCIAL
      where SOCIAL.CODIGO not in ( SELECT ARRECADACAO.SEU_NUMERO
                                    from ARRECADACAO
                                    where ARRECADACAO.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
                                   )
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;
         NOSSO_NUMERO = :codigo;
         TIPO_COBRANCA = 'ASSOCIATIVA';

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO - proc de ajuste',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

         SUSPEND;
      end


/*=============== GUIAS SOCIAL - Plano basico =====================*/
  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_PLANO_BASICO;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select PLANO_BASICO.CODIGO
          , PLANO_BASICO.EMPRESA
          , PLANO_BASICO.DATA_EMISSAO
          , PLANO_BASICO.DATA_VENCIMENTO
          , PLANO_BASICO.DATA_BAIXA
          , PLANO_BASICO.COMPETENCIA
          , PLANO_BASICO.COMPLEMENTAR
          , PLANO_BASICO.VALOR
          , PLANO_BASICO.MULTA_JUROS
          , PLANO_BASICO.VALOR_BAIXA
          , PLANO_BASICO.USUARIO_EMISSAO
          , PLANO_BASICO.USUARIO_BAIXA
          , PLANO_BASICO.OBS_BAIXA
          , PLANO_BASICO.TARIFA
          , 0
          , 0
          , PLANO_BASICO.FORMA_BAIXA
          , PLANO_BASICO.COD_FORMA_PAGAMENTO
      from PLANO_BASICO
      where PLANO_BASICO.CODIGO not in ( SELECT ARRECADACAO.SEU_NUMERO
                                    from ARRECADACAO
                                    where ARRECADACAO.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
                                   )
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;
         NOSSO_NUMERO = :codigo;
         TIPO_COBRANCA = 'PLANO BASICO';

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO - proc de ajuste',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

         SUSPEND;
      end


end^


ALTER PROCEDURE PROC_AJUSTA_PROCESSAMENTO_DET
RETURNS (
    MULTA_JUROS VARCHAR(20),
    LINHA_T VARCHAR(1000),
    LINHA_U VARCHAR(1000))
AS
declare variable COD_PROC_DETALHE_SEG_T integer;
declare variable COD_PROC_DETALHE_SEG_U integer;
declare variable CARACTER char(1);
declare variable DATA_VERIFICAR date;
declare variable DATA_PAGAMENTO date;
declare variable VALOR_PAGAMENTO numeric(15,2);
declare variable DATA_VENCIMENTO date;
declare variable DATA_CREDITO date;
declare variable VALOR_CREDITO numeric(15,2);
declare variable VALOR_TARIFA numeric(15,2);
declare variable VALOR_REPASSE_FEDERACAO numeric(15,2);
declare variable VALOR_REPASSE_CONFEDERACAO numeric(15,2);
declare variable VALOR_REPASSE_OUTROS numeric(15,2);
declare variable FORMA_ARRECADACAO varchar(10);
declare variable TIPO_PAGAMENTO integer;
declare variable VALOR_DOCUMENTO numeric(15,2);
begin
/*===========================
  Ajusa as informações dos detalhes do processamento de retorno
  Um novo campo foi criado  VALOR_MULTA_JUROS e é presciso pegar seu valor na linha processada
  a rotina trata a linha de acordo com o layout, para buscar a posicao do valor de multa e juros

  algumas informações existem apenas no segmento U.. aproveitamos para colocar as informações tb no segmento T

=============================*/

  /*========= Coloque a data de Credito inicial para iniciar a verificacao ============*/

  DATA_VERIFICAR = '02.01.2017';

update PROCESSAMENTO_DETALHES set PROCESSAMENTO_DETALHES.SEGMENTO_LINHA = SUBSTRING( PROCESSAMENTO_DETALHES.LINHA from 14 for 1 )
where (PROCESSAMENTO_DETALHES.DATA_CREDITO BETWEEN '02.01.2017' and '31.08.2017' or PROCESSAMENTO_DETALHES.SEGMENTO_LINHA is null)
  and PROCESSAMENTO_DETALHES.CONVENIO = 'SITCS';


/*============== ajusta o segmento da linha processada Segmento T ou U  =========*/
  update PROCESSAMENTO_DETALHES set PROCESSAMENTO_DETALHES.SEGMENTO_LINHA = SUBSTRING(PROCESSAMENTO_DETALHES.LINHA from 14 FOR 1 )
  where PROCESSAMENTO_DETALHES.CONVENIO = 'SITCS'
     and PROCESSAMENTO_DETALHES.DATA_CREDITO >= :DATA_VERIFICAR;


  /*=============== seleciona o Segmento U para iniciar os ajustes ===============*/
  for
     select PROCESSAMENTO_DETALHES.COD_PROC_DETALHE
         , PROCESSAMENTO_DETALHES.LINHA
     from PROCESSAMENTO_DETALHES
     where PROCESSAMENTO_DETALHES.CONVENIO = 'SITCS'
     and PROCESSAMENTO_DETALHES.DATA_CREDITO BETWEEN :DATA_VERIFICAR  and '31.08.2017'
     and PROCESSAMENTO_DETALHES.SEGMENTO_LINHA = 'U'
     into :COD_PROC_DETALHE_SEG_U , :LINHA_U do
  begin

     /*==============================================
         pega a linha Anterior que é o SEGMENTO T
     ===================================================*/
     COD_PROC_DETALHE_SEG_T = COD_PROC_DETALHE_SEG_U - 1;

    /*============ pega a linha do segmento T para analisar ========*/
    select PROCESSAMENTO_DETALHES.LINHA
    from PROCESSAMENTO_DETALHES
    where PROCESSAMENTO_DETALHES.COD_PROC_DETALHE = :COD_PROC_DETALHE_SEG_T
    into :LINHA_T;

     select PROCESSAMENTO_DETALHES.LINHA
         , PROCESSAMENTO_DETALHES.DATA_PAGAMENTO
         , PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO
         , PROCESSAMENTO_DETALHES.DATA_VENCIMENTO
         , PROCESSAMENTO_DETALHES.DATA_CREDITO
         , PROCESSAMENTO_DETALHES.VALOR_CREDITO
         , PROCESSAMENTO_DETALHES.VALOR_TARIFA
         , PROCESSAMENTO_DETALHES.VALOR_REPASSE_FEDERACAO
         , PROCESSAMENTO_DETALHES.VALOR_REPASSE_CONFEDERACAO
         , PROCESSAMENTO_DETALHES.VALOR_REPASSE_OUTROS
         , PROCESSAMENTO_DETALHES.FORMA_ARRECADACAO
         , PROCESSAMENTO_DETALHES.TIPO_PAGAMENTO
         , PROCESSAMENTO_DETALHES.VALOR_DOCUMENTO

     from PROCESSAMENTO_DETALHES
     where PROCESSAMENTO_DETALHES.COD_PROC_DETALHE = :COD_PROC_DETALHE_SEG_U
     into LINHA_U , :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :DATA_VENCIMENTO, :DATA_CREDITO,
          :VALOR_CREDITO, :VALOR_TARIFA, :VALOR_REPASSE_FEDERACAO, :VALOR_REPASSE_CONFEDERACAO, :VALOR_REPASSE_OUTROS,
          :FORMA_ARRECADACAO, :TIPO_PAGAMENTO, :VALOR_DOCUMENTO;

      /*====================================================
          sitcs antiga tem um char na posicao 38 segmento T
          indicando se foi Arrecadacao DIRETA ou INDIRETA
      =====================================================*/
    caracter = SUBSTRING(LINHA_T FROM 38 for 1 );

    /*============= SITCS ANTIGA ============*/
    if ((CARACTER = 'D' ) or (CARACTER = 'I')) then
    BEGIN
       MULTA_JUROS = SUBSTRING (LINHA_U from 18 for 15);
    END
    ELSE
    /*========= SITCS NOVO CNAB 240 EM 2018 ===========*/
    BEGIN
       MULTA_JUROS = SUBSTRING (LINHA_U from 117 for 15);
    END

    /*============ Ajusta as informações nos segmentos T e U ==============*/
    update PROCESSAMENTO_DETALHES set PROCESSAMENTO_DETALHES.VALOR_MULTA_JUROS          =  cast(:MULTA_JUROS as FLOAT) / 100
                                    , PROCESSAMENTO_DETALHES.DATA_PAGAMENTO             = :DATA_PAGAMENTO
                                    , PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO            = :VALOR_PAGAMENTO
                                    , PROCESSAMENTO_DETALHES.DATA_VENCIMENTO            = :DATA_VENCIMENTO
                                    , PROCESSAMENTO_DETALHES.DATA_CREDITO               = :DATA_CREDITO
                                    , PROCESSAMENTO_DETALHES.VALOR_CREDITO              = :VALOR_CREDITO
                                    , PROCESSAMENTO_DETALHES.VALOR_TARIFA               = :VALOR_TARIFA
                                    , PROCESSAMENTO_DETALHES.VALOR_REPASSE_FEDERACAO    = :VALOR_REPASSE_FEDERACAO
                                    , PROCESSAMENTO_DETALHES.VALOR_REPASSE_CONFEDERACAO = :VALOR_REPASSE_CONFEDERACAO
                                    , PROCESSAMENTO_DETALHES.VALOR_REPASSE_OUTROS       = :VALOR_REPASSE_OUTROS

                                    , PROCESSAMENTO_DETALHES.FORMA_ARRECADACAO          = :FORMA_ARRECADACAO
                                    , PROCESSAMENTO_DETALHES.TIPO_PAGAMENTO             = :TIPO_PAGAMENTO
                                    , PROCESSAMENTO_DETALHES.VALOR_DOCUMENTO            = :VALOR_DOCUMENTO


    where PROCESSAMENTO_DETALHES.COD_PROC_DETALHE in (:COD_PROC_DETALHE_SEG_T , :COD_PROC_DETALHE_SEG_U);

     suspend;
  end 




end^


ALTER PROCEDURE PROC_AJUSTA_VINCULO_COBRANCA
RETURNS (
    DETALHE_COD_COBRANCA_DETALHE NUMERIC(15,0),
    DETALHE_COD_ARRECADACAO NUMERIC(15,0),
    DETALHE_COMPETENCIA INTEGER,
    DETALHE_COMPLEMENTAR INTEGER,
    DETALHE_COD_TABELA_RELACIONADA VARCHAR(80),
    DETALHE_TABELA_RELACIONADA VARCHAR(80),
    DETALHE_COD_TIPO_COBRANCA INTEGER,
    DETALHE_EXCLUIDA VARCHAR(10),
    ARRECADACAO_COD_ARRECADACAO VARCHAR(44))
AS
begin
   /*======================================================================
     verifica nas cobrancas se existe alguma arrecadacao com memsa compentecia e complementar ja paga
     caso existe realiza a troca do codigod da Arrecadacao na tabela de cobranca_detalhe
     pelo codigo da arrecadação que esta paga

     Isto acontece no caso de existir uma cobranca gerada localmente e feira sua cobranac
     mas o cliente gera e paga uma guia pela internet.. o vinculo da cobrana ainda fica com a guia local
     que nao esta paga.. mas a memsa competencia foi paga pela guia da internet
   =======================================================================*/
   for
      select COBRANCA_DETALHE.COD_COBRANCA_DETALHE
           , ARRECADACAO.COD_ARRECADACAO
           , ARRECADACAO.COMPETENCIA
           , COALESCE( ARRECADACAO.COMPLEMENTAR , '0')
   
           , ARRECADACAO.COD_TABELA_RELACIONADA
           , ARRECADACAO.TABELA_RELACIONADA
           , ARRECADACAO.COD_TIPO_COBRANCA
           , ARRECADACAO.EXCLUIDA
      from COBRANCA_DETALHE
         inner join ARRECADACAO on ARRECADACAO.COD_ARRECADACAO = COBRANCA_DETALHE.COD_ARRECADACAO
      where ARRECADACAO.EXCLUIDA = 'T'
   
       into  DETALHE_COD_COBRANCA_DETALHE, :DETALHE_COD_ARRECADACAO, :DETALHE_COMPETENCIA, : DETALHE_COMPLEMENTAR
            ,:DETALHE_COD_TABELA_RELACIONADA, :DETALHE_TABELA_RELACIONADA, :DETALHE_COD_TIPO_COBRANCA
            , :DETALHE_EXCLUIDA do
    begin
         ARRECADACAO_COD_ARRECADACAO = null;
         for
            select first 1 ARRECADACAO.COD_ARRECADACAO
            from ARRECADACAO
            where  ARRECADACAO.COD_TABELA_RELACIONADA = :DETALHE_COD_TABELA_RELACIONADA
               and ARRECADACAO.COMPETENCIA            = :DETALHE_COMPETENCIA
               and coalesce( ARRECADACAO.COMPLEMENTAR , '0')          = :DETALHE_COMPLEMENTAR
               and ARRECADACAO.COD_TIPO_COBRANCA = :DETALHE_COD_TIPO_COBRANCA
               and ARRECADACAO.EXCLUIDA is null
            into :ARRECADACAO_COD_ARRECADACAO do
          begin
             update COBRANCA_DETALHE set COBRANCA_DETALHE.COD_ARRECADACAO = :ARRECADACAO_COD_ARRECADACAO
             where  COBRANCA_DETALHE.COD_COBRANCA_DETALHE = :DETALHE_COD_COBRANCA_DETALHE;
          end
    end
end^


ALTER PROCEDURE PROC_ANALISA_PROCES_DETALHE
RETURNS (
    RAZAO_SOCIAL VARCHAR(80),
    CNPJ VARCHAR(14),
    CONVENIO VARCHAR(80),
    NUMERO_GUIA VARCHAR(80),
    DATA_VENCIMENTO DATE,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_DOCUMENTO NUMERIC(15,2),
    DATA_CREDITO DATE,
    VALOR_CREDITO NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    FORMA_ARRECADACAO VARCHAR(10),
    TIPO_PAGAMENTO INTEGER)
AS
DECLARE VARIABLE CNPJ_PESQUISA VARCHAR(14) CHARACTER SET WIN1252;
begin
  for
     SELECT PROCESSAMENTO_DETALHES.CONVENIO
          , PROCESSAMENTO_DETALHES.NUMERO_GUIA
          , PROCESSAMENTO_DETALHES.DATA_PAGAMENTO
          , PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO
          , PROCESSAMENTO_DETALHES.DATA_VENCIMENTO
          , PROCESSAMENTO_DETALHES.VALOR_DOCUMENTO
          , PROCESSAMENTO_DETALHES.DATA_CREDITO
          , PROCESSAMENTO_DETALHES.VALOR_CREDITO
          , PROCESSAMENTO_DETALHES.VALOR_TARIFA
          , PROCESSAMENTO_DETALHES.FORMA_ARRECADACAO
          , PROCESSAMENTO_DETALHES.TIPO_PAGAMENTO

      from PROCESSAMENTO_DETALHES
      where PROCESSAMENTO_DETALHES.DATA_PAGAMENTO is not null

      into :CONVENIO, :NUMERO_GUIA, :DATA_PAGAMENTO, :VALOR_PAGAMENTO,
           :DATA_VENCIMENTO, :VALOR_DOCUMENTO, :DATA_CREDITO,
           :VALOR_CREDITO, :VALOR_TARIFA, :FORMA_ARRECADACAO, :TIPO_PAGAMENTO do
      begin
          CNPJ_PESQUISA = :NUMERO_GUIA;

          CNPJ = '';
          RAZAO_SOCIAL = '';
         for
           SELECT empresa.CNPJ
                , empresa.RAZAOSOCIAL
           from EMPRESA
           where empresa.CNPJ LIKE  :CNPJ_PESQUISA ||'__'
         into :CNPJ , :RAZAO_SOCIAL do
         begin
            SUSPEND;
         end
      end
end^


ALTER PROCEDURE PROC_APURA_RECEITAS (
    INICIO DATE,
    FIM DATE)
RETURNS (
    TOTAL_JUROS NUMERIC(15,2),
    CREDITO_FEDERACAO NUMERIC(15,2),
    CREDITO_CONFEDERACAO NUMERIC(15,2),
    CREDITO_MTE NUMERIC(15,2),
    TOTAL_TARIFA NUMERIC(15,2),
    TOTAL_PAGAMENTO NUMERIC(15,2),
    TOTAL_CREDITO NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    TIPO_ENTRADA VARCHAR(80),
    TOTAL_EXTRATO NUMERIC(15,2),
    CONSOLIDADO VARCHAR(1),
    QTE_GUIAS INTEGER)
AS
declare variable HISTORICO_EXTRATO_SINDICAL varchar(80);
declare variable HISTORICO_EXTRATO_ASSISTENCIAL varchar(80);
begin
   HISTORICO_EXTRATO_SINDICAL    = 'ARREC SIND';

   select registro.codigo_sicap from registro
   INTO :HISTORICO_EXTRATO_ASSISTENCIAL;

   TIPO_GUIA = 'SITCS';
   for
      select
            SUM(cast (SUBSTRING(linha FROM 18 FOR 15) as float)/100) as TOTAL_JUROS,
            SUM(cast (SUBSTRING(linha FROM 33 FOR 15) as float)/100) as CREDITO_FEDERACAO,
            SUM(cast (SUBSTRING(linha FROM 48 FOR 15) as float)/100) as CREDITO_CONFEDERACAO,
            SUM(cast (SUBSTRING(linha FROM 63 FOR 15) as float)/100) as CREDITO_MTE,
            SUM(processamento_detalhes.valor_tarifa)    AS TOTAL_TARIFA,
            SUM(processamento_detalhes.valor_pagamento) AS TOTAL_PAGAMENTO,
            SUM(processamento_detalhes.valor_credito)   AS TOTAL_CREDITO,
            COUNT(processamento_detalhes.valor_credito)
    
      from processamento_detalhes
      where convenio =:TIPO_GUIA AND DATA_CREDITO between :INICIO AND :FIM
        AND processamento_detalhes.cod_movimentacao = '06'

   INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:QTE_GUIAS DO
   begin

      SELECT sum(valor) AS TOTAL
      FROM extrato_bancario
      WHERE data_mov between :INICIO AND :FIM AND historico IN (:HISTORICO_EXTRATO_SINDICAL)
      INTO: TOTAL_EXTRATO;
      if (TOTAL_EXTRATO = TOTAL_CREDITO) then
        CONSOLIDADO = 'T';
      ELSE
        CONSOLIDADO = 'F';

      TIPO_GUIA    = 'SINDICAL';
      TIPO_ENTRADA = 'BANCO';

   end

   suspend;

   TOTAL_EXTRATO = 0;
   CONSOLIDADO   = 'F';

   for
      select SUM(SINDICAL.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(SINDICAL.valor_baixa),
             SUM(SINDICAL.valor_baixa),
             COUNT(SINDICAL.valor_baixa)
      from sindical
      where sindical.DATA_BAIXA between :INICIO AND :FIM
         AND sindical.usuario_baixa <> 1
         AND sindical.valor_baixa > 0
         AND sindical.FORMA_BAIXA not like 'AJUSTE FALHAS DE PROCESSAMENTO - %'
   INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
   begin
      TIPO_GUIA = 'SINDICAL';
      TIPO_ENTRADA = 'CAIXA';
      TOTAL_TARIFA=0;
      if (TOTAL_JUROS IS NULL) then
         TOTAL_JUROS=0;
   end
 
   suspend;

   TOTAL_EXTRATO = 0;
   CONSOLIDADO   = 'F';

   for
      select SUM(SINDICAL.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(SINDICAL.valor_baixa),
             SUM(SINDICAL.valor_baixa),
             COUNT(SINDICAL.valor_baixa)
 
 
 
      from sindical
      where sindical.DATA_BAIXA between :INICIO AND :FIM AND sindical.usuario_baixa <> 1 AND sindical.valor_baixa = 0
   INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
   begin
      TIPO_GUIA    = 'SINDICAL';
      TIPO_ENTRADA = 'ZERADAS';
      TOTAL_TARIFA = 0;
 
      if (TOTAL_JUROS IS NULL) then
        TOTAL_JUROS=0;
   end

   suspend;

   TIPO_GUIA = 'SICAP';
   TOTAL_EXTRATO=0;
   for
      select
            0 as TOTAL_JUROS,
            0 as CREDITO_FEDERACAO,
            0 as CREDITO_CONFEDERACAO,
            0 as CREDITO_MTE,
            SUM(processamento_detalhes.valor_tarifa)    AS TOTAL_TARIFA,
            SUM(processamento_detalhes.valor_pagamento) AS TOTAL_PAGAMENTO,
            SUM(processamento_detalhes.valor_credito)   AS TOTAL_CREDITO,
            COUNT(processamento_detalhes.valor_pagamento)

      from processamento_detalhes
      where convenio =:TIPO_GUIA AND DATA_CREDITO between :INICIO AND :FIM
   INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
   begin
      SELECT sum(valor) AS TOTAL
      FROM extrato_bancario
      WHERE data_mov between :INICIO AND :FIM AND extrato_bancario.nr_doc IN (:HISTORICO_EXTRATO_ASSISTENCIAL)
      INTO: TOTAL_EXTRATO;

      if (TOTAL_EXTRATO = TOTAL_CREDITO) then
         CONSOLIDADO = 'T';
      else
         CONSOLIDADO = 'F';

      if (TOTAL_JUROS IS NULL) then
         TOTAL_JUROS=0;

      TIPO_GUIA    = 'ASSISTENCIAL';
      TIPO_ENTRADA = 'BANCO';
   end

   suspend;

  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(CONFEDERATIVA.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(CONFEDERATIVA.valor_baixa),
             SUM(CONFEDERATIVA.valor_baixa),
             COUNT(CONFEDERATIVA.valor_baixa)
      from CONFEDERATIVA
      where CONFEDERATIVA.DATA_BAIXA between :INICIO AND :FIM AND CONFEDERATIVA.usuario_baixa <> 1 AND CONFEDERATIVA.valor_baixa > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'ASSISTENCIAL-MENSAL';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(CONFEDERATIVA.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(CONFEDERATIVA.valor_baixa),
             SUM(CONFEDERATIVA.valor_baixa),
             COUNT(CONFEDERATIVA.valor_baixa)
      from CONFEDERATIVA
      where CONFEDERATIVA.DATA_BAIXA between :INICIO AND :FIM AND CONFEDERATIVA.usuario_baixa <> 1 AND CONFEDERATIVA.valor_baixa = 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'ASSISTENCIAL-MENSAL';
    TIPO_ENTRADA = 'ZERADAS';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(ASSISTENCIAL.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(ASSISTENCIAL.valor_baixa),
             SUM(ASSISTENCIAL.valor_baixa),
             COUNT(ASSISTENCIAL.valor_baixa)
      from ASSISTENCIAL
      where ASSISTENCIAL.DATA_BAIXA between :INICIO AND :FIM AND ASSISTENCIAL.usuario_baixa <> 1 AND ASSISTENCIAL.valor_baixa > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'ASSISTENCIAL-ANUAL';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(ASSISTENCIAL.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(ASSISTENCIAL.valor_baixa),
             SUM(ASSISTENCIAL.valor_baixa),
             COUNT(ASSISTENCIAL.valor_baixa)
      from ASSISTENCIAL
      where ASSISTENCIAL.DATA_BAIXA between :INICIO AND :FIM AND ASSISTENCIAL.usuario_baixa <> 1 AND ASSISTENCIAL.valor_baixa = 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'ASSISTENCIAL-ANUAL';
    TIPO_ENTRADA = 'ZERADAS';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

  TIPO_GUIA = 'BANCOOB';
  TOTAL_EXTRATO=0;
  for
      select
            0 as TOTAL_JUROS,
            0 as CREDITO_FEDERACAO,
            0 as CREDITO_CONFEDERACAO,
            0 as CREDITO_MTE,
            SUM(processamento_detalhes.valor_tarifa) / 2   AS TOTAL_TARIFA,
            SUM(processamento_detalhes.valor_pagamento) / 2  AS TOTAL_PAGAMENTO,
            SUM(processamento_detalhes.valor_credito) / 2   AS TOTAL_CREDITO,
            COUNT(processamento_detalhes.valor_pagamento) / 2
    
      from processamento_detalhes
      where convenio =:TIPO_GUIA AND DATA_PAGAMENTO between :INICIO AND :FIM
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'PLANO BÁSICO';
    TIPO_ENTRADA = 'BANCO';
    if (TOTAL_CREDITO IS NULL) then
    TOTAL_CREDITO = TOTAL_PAGAMENTO;
    if (TOTAL_EXTRATO = TOTAL_CREDITO) then
      CONSOLIDADO = 'T';
    else
      CONSOLIDADO = 'F';
    end
    if (TOTAL_TARIFA IS NULL) then
      TOTAL_TARIFA=0;
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    suspend;


 -- LISTA PLANO BÁSICO RECEBIDO NO CAIXA DO SINDICATO
  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(plano_basico.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(plano_basico.valor_baixa),
             SUM(plano_basico.valor_baixa),
             COUNT(plano_basico.valor_baixa)
      from plano_basico
      where plano_basico.data_baixa between :INICIO AND :FIM AND plano_basico.usuario_baixa <> 1 AND plano_basico.valor_baixa > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'PLANO BÁSICO';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select SUM(plano_basico.multa_juros),
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(plano_basico.valor_baixa),
             SUM(plano_basico.valor_baixa),
             COUNT(plano_basico.valor_baixa)
      from plano_basico
      where plano_basico.data_baixa between :INICIO AND :FIM AND plano_basico.usuario_baixa <> 1 AND plano_basico.valor_baixa = 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'PLANO BÁSICO';
    TIPO_ENTRADA = 'ZERADAS';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

 -- LISTA MENSALIDADES RECEBIDAS NO CAIXA DO SINDICATO
  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select 0,
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(associativa.VALOR),
             SUM(associativa.VALOR),
             COUNT(associativa.VALOR)
      from ASSOCIATIVA
      where ASSOCIATIVA.data between :INICIO AND :FIM AND ASSOCIATIVA.valor > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'ASSOCIATIVA';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

 -- LISTA PAGAMENTOS SERVIÇOS RECEBIDOS NO CAIXA DO SINDICATO
  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select 0,
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(pagamento_servico.VALOR) AS TOTAL_PAGAMENTO,
             SUM(pagamento_servico.VALOR) AS TOTAL_CREDITO,
             COUNT(pagamento_servico.valor_baixa) AS QTE_GUIAS
      from pagamento_servico
      where pagamento_servico.data_baixa between :INICIO AND :FIM AND pagamento_servico.valor_baixa > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'SERVIÇOS';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;

 -- LISTA RECIBMENTOS AVULSOLS RECEBIDOS NO CAIXA DO SINDICATO
  TOTAL_EXTRATO=0;
  CONSOLIDADO='F';
  for
      select 0,
             0 as CREDITO_FEDERACAO,
             0 as CREDITO_CONFEDERACAO,
             0 as CREDITO_MTE,
             0 as TOTAL_TARIFA,
             SUM(recibo_avulso.valor) AS TOTAL_PAGAMENTO,
             SUM(recibo_avulso.VALOR) AS TOTAL_CREDITO,
             COUNT(recibo_avulso.valor) AS QTE_GUIAS
      from recibo_avulso
      where recibo_avulso.data between :INICIO AND :FIM AND recibo_avulso.valor > 0
    INTO :TOTAL_JUROS, :CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO, :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:qte_guias DO
    begin
    TIPO_GUIA = 'OUTRAS';
    TIPO_ENTRADA = 'CAIXA';
    if (TOTAL_JUROS IS NULL) then
      TOTAL_JUROS=0;
    end
    suspend;


end^


ALTER PROCEDURE PROC_APURA_RECEITAS_DIA (
    TIPO_RECOLHIMENTO VARCHAR(20),
    INICIO DATE,
    FIM DATE)
RETURNS (
    TOTAL_CREDITO_SIMPLES NUMERIC(15,2),
    DATA_CREDITO DATE,
    TOTAL_PAGAMENTO NUMERIC(15,2),
    TOTAL_JUROS NUMERIC(15,2),
    TOTAL_CREDITO NUMERIC(15,2),
    CREDITO_FEDERACAO NUMERIC(15,2),
    CREDITO_CONFEDERACAO NUMERIC(15,2),
    CREDITO_MTE NUMERIC(15,2),
    TOTAL_TARIFA NUMERIC(15,2),
    TIPO_GUIA VARCHAR(80),
    TIPO_ENTRADA VARCHAR(80),
    TOTAL_EXTRATO NUMERIC(15,2),
    CONSOLIDADO VARCHAR(1),
    QTE_GUIAS INTEGER,
    DIRETA_INDIRETA VARCHAR(10))
AS
declare variable HISTORICO_EXTRATO_SINDICAL varchar(80);
declare variable HISTORICO_EXTRATO_ASSISTENCIAL varchar(80);
begin
  /* Procedure Text */
  if ( UPPER(TIPO_RECOLHIMENTO) = 'SINDICAL') then
  begin
      TIPO_GUIA = 'SITCS';
      for
          select
                processamento_detalhes.data_credito,
                SUM(cast (SUBSTRING(linha FROM 18 FOR 15) as float)/100) as TOTAL_JUROS,
                SUM(processamento_detalhes.valor_credito)   -  SUM(cast (SUBSTRING(linha FROM 18 FOR 15) as float)/100) AS TOTAL_CREDITO_SIMPLES,
                SUM(cast (SUBSTRING(linha FROM 33 FOR 15) as float)/100) as CREDITO_FEDERACAO,
                SUM(cast (SUBSTRING(linha FROM 48 FOR 15) as float)/100) as CREDITO_CONFEDERACAO,
                SUM(cast (SUBSTRING(linha FROM 63 FOR 15) as float)/100) as CREDITO_MTE,
                SUM(processamento_detalhes.valor_tarifa)    AS TOTAL_TARIFA,
                SUM(cast (SUBSTRING(linha FROM 82 FOR 11) as float)/100) as TOTAL_PAGAMENTO,
                SUM(processamento_detalhes.valor_credito)   AS TOTAL_CREDITO,
                COUNT(processamento_detalhes.valor_credito),
                processamento_detalhes.direta_indireta
        
          from processamento_detalhes
          where convenio = :TIPO_GUIA
               AND DATA_CREDITO between :INICIO AND :FIM
               AND processamento_detalhes.cod_movimentacao = '06'
          GROUP BY processamento_detalhes.data_credito, processamento_detalhes.direta_indireta
        INTO :DATA_CREDITO,:TOTAL_JUROS, :TOTAL_CREDITO_SIMPLES,:CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO,
             :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:QTE_GUIAS,:direta_indireta DO
         suspend;

         for
          select
                processamento_detalhes.data_credito,
                SUM(cast (SUBSTRING(linha FROM 18 FOR 15) as float)/100) as TOTAL_JUROS,
                SUM(processamento_detalhes.valor_credito)   -  SUM(cast (SUBSTRING(linha FROM 18 FOR 15) as float)/100) AS TOTAL_CREDITO_SIMPLES,
                SUM(cast (SUBSTRING(linha FROM 33 FOR 15) as float)/100) as CREDITO_FEDERACAO,
                SUM(cast (SUBSTRING(linha FROM 48 FOR 15) as float)/100) as CREDITO_CONFEDERACAO,
                SUM(cast (SUBSTRING(linha FROM 63 FOR 15) as float)/100) as CREDITO_MTE,
                SUM(processamento_detalhes.valor_tarifa)    AS TOTAL_TARIFA,
                SUM(cast (SUBSTRING(linha FROM 82 FOR 11) as float)/100) as TOTAL_PAGAMENTO,
                SUM(processamento_detalhes.valor_credito)   AS TOTAL_CREDITO,
                COUNT(processamento_detalhes.valor_credito),
                processamento_detalhes.direta_indireta
        
          from processamento_detalhes
          where convenio = :TIPO_GUIA
               AND DATA_CREDITO between :INICIO AND :FIM
               AND processamento_detalhes.cod_movimentacao = '09'
          GROUP BY processamento_detalhes.data_credito, processamento_detalhes.direta_indireta
        INTO :DATA_CREDITO,:TOTAL_JUROS, :TOTAL_CREDITO_SIMPLES,:CREDITO_FEDERACAO, :CREDITO_CONFEDERACAO,
             :CREDITO_MTE, :TOTAL_TARIFA, :TOTAL_PAGAMENTO, :TOTAL_CREDITO,:QTE_GUIAS,:direta_indireta DO
        begin
           TOTAL_JUROS           = TOTAL_JUROS * -1;
           TOTAL_CREDITO_SIMPLES = TOTAL_CREDITO_SIMPLES *-1;
           CREDITO_FEDERACAO     = CREDITO_FEDERACAO * -1;
           CREDITO_CONFEDERACAO  = CREDITO_CONFEDERACAO * -1;

           CREDITO_MTE     = CREDITO_MTE * -1;
           TOTAL_TARIFA    = TOTAL_TARIFA * -1;
           TOTAL_PAGAMENTO = TOTAL_PAGAMENTO * -1;
           TOTAL_CREDITO   = TOTAL_CREDITo * -1;
           suspend;
        end
  end

  if (UPPER(tipo_recolhimento) = 'ASSISTENCIAL') then
  begin
      TIPO_GUIA = 'SICAP';
      for
          select
                processamento_detalhes.data_credito,
                SUM(processamento_detalhes.valor_tarifa)    AS TOTAL_TARIFA,
                SUM(processamento_detalhes.valor_credito)   AS TOTAL_CREDITO,
                COUNT(processamento_detalhes.valor_credito)
    
          from processamento_detalhes
          where convenio =:TIPO_GUIA AND DATA_CREDITO between :INICIO AND :FIM
          GROUP BY processamento_detalhes.data_credito
        INTO :DATA_CREDITO,:TOTAL_TARIFA, :TOTAL_CREDITO,:QTE_GUIAS DO
        suspend;
  end


end^


ALTER PROCEDURE PROC_ARRECADACAO_GUIAS (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    EMPRESAS_ATIVAS INTEGER,
    PERIODO VARCHAR(80),
    TIPO_GUIA VARCHAR(40),
    QTD_GUIAS_EMITIDAS INTEGER,
    QTD_GUIAS_PAGAS INTEGER,
    VALOR_GUIAS_PAGAS NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    PERCENTUAL_RECEBIDO DECIMAL(15,3),
    PERCENTUAL_COBRAR DECIMAL(15,3),
    CONSOLIDADDO_COM_EXTRATO VARCHAR(10),
    GUIAS_SEM_IDENTIFICACAO INTEGER,
    VALOR_EXTRATO NUMERIC(15,2),
    CIDADE VARCHAR(80))
AS
DECLARE VARIABLE PERIODO_TEMP VARCHAR(80);
begin
   SELECT COUNT(EMPRESA.CNPJ)
   FROM EMPRESA
      INNER JOIN EMPRESA_STATUS ON EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS
   WHERE EMPRESA_STATUS.GERA_GUIAS = 'T'
   INTO :EMPRESAS_ATIVAS;

   /*===============================
    Guias Sindicais
   =================================*/
   for
      select COUNT(SINDICAL.CODIGO)
           , EXTRACT( YEAR FROM sindical.DATA_VENCIMENTO)
      from SINDICAL
      where sindical.DATA_VENCIMENTO BETWEEN :DATA_INICIO and :DATA_FIM
      group by 2
      into :QTD_GUIAS_EMITIDAS, :PERIODO do
   begin
       TIPO_GUIA = 'Sindical';

       QTD_GUIAS_PAGAS   = 0;
       VALOR_GUIAS_PAGAS = 0;
       VALOR_CREDITADO   = 0;
       VALOR_TARIFA      = 0;
       VALOR_EXTRATO     = 0;

       /*====== A qtd de guias pagas e valores sao verificados na tabela de detalhes dos processamentos de retornos ===============*/
       select  coalesce( COUNT(PROCESSAMENTO_DETALHES.COD_PROC_DETALHE), 0 )
             , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO) , 0 )
             , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_CREDITO)   , 0 )
             , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_TARIFA)    , 0 )
       from PROCESSAMENTO_DETALHES
       where extract(year FROM PROCESSAMENTO_DETALHES.DATA_PAGAMENTO) = :PERIODO
       and PROCESSAMENTO_DETALHES.CONVENIO = 'SITCS'
       INTO :QTD_GUIAS_PAGAS, :VALOR_GUIAS_PAGAS, :VALOR_CREDITADO, :VALOR_TARIFA;


        /*============ pega o total do valor dos extratos bancarios ============*/
       SELECT SUM(EXTRATO_BANCARIO.VALOR)
       FROM EXTRATO_BANCARIO
       WHERE EXTRACT(YEAR FROM EXTRATO_BANCARIO.DATA_MOV) = :PERIODO
          AND  EXTRATO_BANCARIO.HISTORICO = 'ARREC SIND'
       INTO :VALOR_EXTRATO;


       PERCENTUAL_RECEBIDO = (:QTD_GUIAS_PAGAS * 100) / :EMPRESAS_ATIVAS;
       PERCENTUAL_COBRAR   = 100 - :PERCENTUAL_RECEBIDO;
       suspend;
   end

/*$$IBEC$$    QTD_GUIAS_PAGAS   = 0;
   VALOR_GUIAS_PAGAS = 0;
   VALOR_CREDITADO   = 0;
   VALOR_TARIFA      = 0;
   VALOR_EXTRATO     = 0;
   QTD_GUIAS_EMITIDAS = 0;

     $$IBEC$$*//*===== separa as arrecadacoes por cidades ======= *//*$$IBEC$$ 
   for
     select EMPRESA.ENDERECO_CIDADE
     from EMPRESA
     group by EMPRESA.ENDERECO_CIDADE
     into :CIDADE do
   begin
      TIPO_GUIA = 'Sindical por cidades';

      select COUNT(SINDICAL.CODIGO)
      from SINDICAL
         inner join EMPRESA on EMPRESA.CNPJ = SINDICAL.EMPRESA
      where sindical.DATA_VENCIMENTO BETWEEN :DATA_INICIO and :DATA_FIM
         and sindical.DATA_VENCIMENTO BETWEEN :DATA_INICIO and :DATA_FIM
         and EMPRESA.ENDERECO_CIDADE = :CIDADE
      into :QTD_GUIAS_EMITIDAS;

        $$IBEC$$*//*====== A qtd de guias pagas e valores sao verificados na tabela de detalhes dos processamentos de retornos ===============*//*$$IBEC$$ 
      select  coalesce( COUNT(PROCESSAMENTO_DETALHES.COD_PROC_DETALHE), 0 )
            , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO) , 0 )
            , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_CREDITO)   , 0 )
            , coalesce( sum(PROCESSAMENTO_DETALHES.VALOR_TARIFA)    , 0 )
      from PROCESSAMENTO_DETALHES
         inner join SINDICAL on sindical.CODIGO = PROCESSAMENTO_DETALHES.NUMERO_GUIA
         inner join empresa on empresa.CNPJ = SINDICAL.EMPRESA
      where extract(year FROM PROCESSAMENTO_DETALHES.DATA_PAGAMENTO) = :PERIODO
             and PROCESSAMENTO_DETALHES.CONVENIO = 'SITCS'
             and EMPRESA.ENDERECO_CIDADE = :CIDADE
      INTO :QTD_GUIAS_PAGAS, :VALOR_GUIAS_PAGAS, :VALOR_CREDITADO, :VALOR_TARIFA;

      PERCENTUAL_RECEBIDO = (:QTD_GUIAS_PAGAS * 100) / :EMPRESAS_ATIVAS;
      PERCENTUAL_COBRAR   = 100 - :PERCENTUAL_RECEBIDO;

      if (QTD_GUIAS_EMITIDAS > 0 ) then
      begin
         PERIODO_TEMP = PERIODO;
         PERIODO = :cidade;
         SUSPEND;

         PERIODO = PERIODO_TEMP;
      end

   end $$IBEC$$*/

end^


ALTER PROCEDURE PROC_ARRECADACAO_REMOVE_DETALHE (
    COD_ARRECADACAO_DETALHE INTEGER,
    COD_ARRECADACAO INTEGER,
    COD_ARRECADACAO_VINCULADO INTEGER)
RETURNS (
    EXCLUIDO VARCHAR(1))
AS
declare variable VALOR_REMOVIDO numeric(15,2);
begin
  /*===============================================================
   Remove um detalhe da arrecadacao de cobranca e ajusta o valor da conbranca principal
   Localiza a arrecadacao a ser removida atraves do codigo COD_ARRECADACAO_VINCULADO
   Ajusta o valor da arrecadacao principal atraves do codigo COD_ARRECADACAO
   Remove o detalhe da arrecadacao atraves do codigo COD_ARRECADACAO_DETALHE
  ================================================================*/

  /*================= busca o valor a ser removido ==================*/

  EXCLUIDO = 'F';
  VALOR_REMOVIDO = 0;

  if (:COD_ARRECADACAO_DETALHE is null) then
     EXIT;

  select ARRECADACAO.VALOR_A_PAGAR
  from ARRECADACAO
  where arrecadacao.COD_ARRECADACAO = :COD_ARRECADACAO_VINCULADO
  into :VALOR_REMOVIDO;

  delete from ARRECADACAO_DETALHE where arrecadacao_detalhe.COD_ARRECADACAO_DETALHE = :COD_ARRECADACAO_DETALHE;
  delete from ARRECADACAO where arrecadacao.COD_ARRECADACAO = :COD_ARRECADACAO_VINCULADO;

  update arrecadacao set  arrecadacao.VALOR_A_PAGAR = arrecadacao.VALOR_A_PAGAR - :VALOR_REMOVIDO
  where arrecadacao.COD_ARRECADACAO = :COD_ARRECADACAO;

  EXCLUIDO = 'T';
  suspend;
end^


ALTER PROCEDURE PROC_ASSIST_ANUAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
DECLARE VARIABLE VENCIMENTO_CONVENCAO DATE;
DECLARE VARIABLE ENCONTRADA VARCHAR(1);
DECLARE VARIABLE CODIGO_CHAVE_TABELA INTEGER;
DECLARE VARIABLE INICIO_COBRANCA DATE;
DECLARE VARIABLE DATA_BASE DATE;
DECLARE VARIABLE INICIO_ATIVIDADE DATE;
DECLARE VARIABLE COMPLEMENTAR_CONVENCAO INTEGER;
DECLARE VARIABLE EXERCICIO_CONVENCAO INTEGER;
BEGIN

  /*=====================================
   Encontra as guias Assistenciais anuais  nao geradas
   O parametro VERIFICA_GUIAS_NAO_GERADAS na tabela
   configuracao_assistencial deve ser T
  =======================================*/ 

  select configuracao_assistencial.DATA_BASE_GUIAS_NAO_GERADAS
  from configuracao_assistencial
  into :DATA_BASE;

   SELECT  EMPRESA.INICIO_COBRANCA
         , EMPRESA.INICIO_ATIVIDADE 
         , EMPRESA.JF
         , EMPRESA.CNPJ
         , EMPRESA.RAZAOSOCIAL 
         , EMPRESA.ENDERECO_CIDADE
         , EMPRESA.TELEFONE1
         , EMPRESA.TELEFONE2
   
         , CONTABILIDADE.JF
         , CONTABILIDADE.CNPJ
         , CONTABILIDADE.RAZAOSOCIAL
         , CONTABILIDADE.TELEFONE1
         , CONTABILIDADE.TELEFONE2
   
   FROM empresa
     LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR
     inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS
                              and EMPRESA_STATUS.GERA_GUIAS = 'T'

   where  EMPRESA.CNPJ = :CNPJ
   INTO :INICIO_COBRANCA, :INICIO_ATIVIDADE ,:EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1
        , :EMPRESA_TELEFONE2
        , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
        , :CONTABILIDADE_TELEFONE2;

  /*=============================================
    Pega a maoir data entre INICIO_COBRANCA da empresa, INICIO_ATIVIDADE da empresa , DATA_BASE_GUIAS_NAO_GERADAS  da tabela de configuracao da Assistencial
    A maior data vai ser a base para o inicio de cobranca
  ==============================================*/
  select PROC_MAIOR_DATA.DATA_MAIOR
  from PROC_MAIOR_DATA(:INICIO_ATIVIDADE,:INICIO_COBRANCA,:DATA_BASE)
  into :INICIO_COBRANCA;

  if (INICIO_COBRANCA IS NULL ) then
     EXIT;
     
   /*===================================
     Perecorre todas os vencimentos das convenções que a empresa
     faz parte e verifica se existe a guia gerada no sistema
   ====================================*/
  for
     SELECT CONVENCAO_VENCIMENTOS.DATA_VENCIMENTO
          , CONVENCAO_VENCIMENTOS.COMPLEMENTAR
          , CONVENCAO.EXERCICIO
     FROM EMPRESA
       inner join CONVENCAO_BASE on CONVENCAO_BASE.COD_BASE = EMPRESA.COD_BASE_TERRITORIAL
       inner join convencao on CONVENCAO.CODIGO = CONVENCAO_BASE.COD_CONVENCAO
       inner join CONVENCAO_SEGMENTO on CONVENCAO_SEGMENTO.COD_SEGMENTO = empresa.COD_SEGMENTO
       inner join CONVENCAO_VENCIMENTOS on CONVENCAO_VENCIMENTOS.COD_CONVENCAO = CONVENCAO.CODIGO

     where empresa.CNPJ = :CNPJ

     group by CONVENCAO_VENCIMENTOS.DATA_VENCIMENTO
          , CONVENCAO_VENCIMENTOS.COMPLEMENTAR
          , CONVENCAO.EXERCICIO

  into :VENCIMENTO_CONVENCAO, :COMPLEMENTAR_CONVENCAO, :EXERCICIO_CONVENCAO do
  begin

     /*======== verifica se o inicio da cobranca da empresa é menor q o vencmento da convecao ======*/
     if (INICIO_COBRANCA <= VENCIMENTO_CONVENCAO ) then
     begin

       GUIA_COMPETENCIA = COMPLEMENTAR_CONVENCAO;
       GUIA_COMPLEMENTAR = EXERCICIO_CONVENCAO;

        ENCONTRADA = 'F';
        GUIA_DATA_EMISSAO = null;
        GUIA_VALOR = null;
   
        /*=====================================
           Verifica a compentencia e complementar na tabela de
           guias
        =======================================*/
        for
           select ASSISTENCIAL.CODIGO
           from ASSISTENCIAL
           where ASSISTENCIAL.EMPRESA = :CNPJ
              and ASSISTENCIAL.COMPETENCIA = :EXERCICIO_CONVENCAO
              and ASSISTENCIAL.COMPETENCIA = :COMPLEMENTAR_CONVENCAO
        INTO :CODIGO_CHAVE_TABELA do
        begin
           ENCONTRADA = 'T';
        end
   
        GUIA_DATA_VENCIMENTO = :VENCIMENTO_CONVENCAO;
   
        /*=====================================
            tenta localzar a guia na tabela de guias geradas na WEB
         =======================================*/ 
        if (encontrada = 'F') then
        begin
           for SELECT  GUIAS_DA_WEB.DATA_VENCIMENTO
                     , GUIAS_DA_WEB.DATA_GERACAO
                     , GUIAS_DA_WEB.COMPLEMENTAR
                     , GUIAS_DA_WEB.VALOR
               from GUIAS_DA_WEB
               where GUIAS_DA_WEB.CNPJ = :CNPJ
                   and GUIAS_DA_WEB.COMPETENCIA = :EXERCICIO_CONVENCAO
                   and GUIAS_DA_WEB.COMPLEMENTAR = :COMPLEMENTAR_CONVENCAO
                   and GUIAS_DA_WEB.TIPO = 'FAA_ANUAL'
           into :GUIA_DATA_VENCIMENTO,:GUIA_DATA_EMISSAO,:GUIA_COMPLEMENTAR,:GUIA_VALOR do
           begin
              ENCONTRADA = 'T';
              COMENTARIO_SITUACAO = 'Gerada pela Web';
           end
        END
   
        if (ENCONTRADA = 'F') then
        begin
           COMENTARIO_SITUACAO = 'Sem Informação';
           GUIA_DATA_VENCIMENTO = VENCIMENTO_CONVENCAO;
           SUSPEND;
        end

     END
  end

END^


ALTER PROCEDURE PROC_ASSIST_MENSAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
declare variable DIA integer;
declare variable MES integer;
declare variable ANO integer;
declare variable VENC_ASSISTENCIAL_PARAMETRO date;
declare variable COMPETENCIA_ATUAL integer;
declare variable ENCONTROU_CONFEDERATIVA varchar(1);
declare variable ENCONTRADA varchar(1);
declare variable CODIGO_CHAVE_TABELA integer;
declare variable INICIO_COBRANCA date;
declare variable DATA_BASE date;
declare variable INICIO_ATIVIDADE date;
declare variable MES_ANO_INICIO varchar(10);
declare variable MES_ANO_VENCIMENTO varchar(10);
declare variable COMPLEMENTAR_ATUAL integer;
BEGIN

  /*=====================================
   Encontra as guias Assistenciais Mensais  nao geradas
   O parametro VERIFICA_GUIAS_NAO_GERADAS na tabela
   CONFEDERATIVA deve ser T
  =======================================*/ 

  select CONFIGURACAO_CONFEDERATIVA.VENCIMENTO_CONFEDERATIVA
       , CONFIGURACAO_CONFEDERATIVA.DATA_BASE_GUIAS_NAO_GERADAS
  from CONFIGURACAO_CONFEDERATIVA
  into :VENC_ASSISTENCIAL_PARAMETRO, :DATA_BASE;

  COMPETENCIA_ATUAL = EXTRACT(YEAR FROM current_date);
  COMPLEMENTAR_ATUAL = EXTRACT(MONTH FROM current_date);

 /*=====================================
   pega a competencia atual (mes atual) e pega o inicio da cobranca da empresa (Competencia).
   A rotina fica em um Loop da competencia da empresa ate a comprencia atual
   Verificando se elas existem nas tabelas
 =======================================*/


   SELECT  EMPRESA.INICIO_COBRANCA
         , EMPRESA.INICIO_ATIVIDADE 
         , EMPRESA.JF
         , EMPRESA.CNPJ
         , EMPRESA.RAZAOSOCIAL 
         , EMPRESA.ENDERECO_CIDADE
         , EMPRESA.TELEFONE1
         , EMPRESA.TELEFONE2
   
         , CONTABILIDADE.JF
         , CONTABILIDADE.CNPJ
         , CONTABILIDADE.RAZAOSOCIAL
         , CONTABILIDADE.TELEFONE1
         , CONTABILIDADE.TELEFONE2
   
   FROM empresa
     LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR
     inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS
                              and EMPRESA_STATUS.GERA_GUIAS = 'T'
   where  EMPRESA.CNPJ = :CNPJ
   INTO :INICIO_COBRANCA, :INICIO_ATIVIDADE ,:EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1
        , :EMPRESA_TELEFONE2
        , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
        , :CONTABILIDADE_TELEFONE2;

  /*=============================================
    Pega a maoir data entre INICIO_COBRANCA, INICIO_ATIVIDADE , DATA_BASE
    A maior vai ser a base para o inicio de cobranca
  ==============================================*/
  select PROC_MAIOR_DATA.DATA_MAIOR
  from PROC_MAIOR_DATA(:INICIO_ATIVIDADE,:INICIO_COBRANCA,:DATA_BASE)
  into :INICIO_COBRANCA;


  if (INICIO_COBRANCA IS NULL ) then
     EXIT;
     
  GUIA_COMPETENCIA = EXTRACT(YEAR FROM :INICIO_COBRANCA);
  GUIA_COMPLEMENTAR = EXTRACT(MONTH FROM :INICIO_COBRANCA);

  while (:GUIA_COMPETENCIA <= :COMPETENCIA_ATUAL) do
  begin
      /*============ Verifica as guias ate o mes atual ========= */
     while (:GUIA_COMPLEMENTAR <=  EXTRACT(MONTH FROM CURRENT_DATE)) do
     begin
        ENCONTRADA = 'F';
        ENCONTROU_CONFEDERATIVA = 'F' ;
        GUIA_DATA_EMISSAO = null;
        GUIA_VALOR = null;
   
        /*=====================================
           Verifica a compentencia e complementar na tabela de
           guias confederativas
        =======================================*/
        for
           select CONFEDERATIVA.CODIGO
           from CONFEDERATIVA
           where CONFEDERATIVA.EMPRESA = :CNPJ
              and CONFEDERATIVA.COMPETENCIA = :GUIA_COMPETENCIA
              and CONFEDERATIVA.COMPLEMENTAR = :GUIA_COMPLEMENTAR
        INTO :CODIGO_CHAVE_TABELA do
        begin
           ENCONTRADA = 'T';
           ENCONTROU_CONFEDERATIVA = 'T';
        end
   
        /*============ monta a data de vencimento da guia Confederativa ==============*/
        dia        = EXTRACT(day from :VENC_ASSISTENCIAL_PARAMETRO);
        mes        = :GUIA_COMPLEMENTAR;
        GUIA_DATA_VENCIMENTO = dia||'.'||:mes||'.'|| :GUIA_COMPETENCIA;
   
        /*=====================================
            tenta localzar a guia na tabela de guias geradas na WEB
         =======================================*/ 
        if (encontrada = 'F') then
        begin
           for SELECT  GUIAS_DA_WEB.DATA_VENCIMENTO
                     , GUIAS_DA_WEB.DATA_GERACAO
                     , GUIAS_DA_WEB.COMPLEMENTAR
                     , GUIAS_DA_WEB.VALOR
               from GUIAS_DA_WEB
               where GUIAS_DA_WEB.CNPJ = :CNPJ
                   and GUIAS_DA_WEB.COMPETENCIA = :GUIA_COMPETENCIA
                   and GUIAS_DA_WEB.TIPO = 'FAA_MENSAL'
           into :GUIA_DATA_VENCIMENTO,:GUIA_DATA_EMISSAO,:GUIA_COMPLEMENTAR,:GUIA_VALOR do
           begin
              ENCONTRADA = 'T';
              COMENTARIO_SITUACAO = 'Gerada pela Web';
           end
        END
   
        if (ENCONTRADA = 'F') then
        begin
           COMENTARIO_SITUACAO = 'Sem Informação';
        end
   
         /*===== so envia o resultado se nao for encontrada na tabela Confederativa =======*/
        if (:ENCONTROU_CONFEDERATIVA = 'F') then
        BEGIN
           mes = :GUIA_COMPLEMENTAR;
           ano = :GUIA_COMPETENCIA;
           MES_ANO_INICIO = mes||ano;

           SUSPEND;
        END
        /*====================================
            Passa para a proxima Complementar
        =====================================*/
        GUIA_COMPLEMENTAR = :GUIA_COMPLEMENTAR + 1;
     end
        /*=====================================
           passa para a proxima competencia
        =======================================*/ 
     GUIA_COMPETENCIA = :GUIA_COMPETENCIA + 1;
  END
END^


ALTER PROCEDURE PROC_CAIXA_MOVIMENTO (
    SQL_WHERE VARCHAR(5000))
RETURNS (
    COD_PLANO_CONTA INTEGER,
    COD_MOVIMENTO_CAIXA NUMERIC(15,0),
    COD_USUARIO_LANCAMENTO INTEGER,
    COD_FILIAL INTEGER,
    COD_CONTA_BANCARIA VARCHAR(10),
    COD_CENTRO_CUSTO INTEGER,
    COD_ESTORNO INTEGER,
    COD_FECHAMENTO INTEGER,
    DATA_CAD DATE,
    HORA_CAD TIME,
    OBS VARCHAR(5000),
    ENTRADA_SAIDA VARCHAR(10),
    DATA_MOVIMENTACAO DATE,
    VALOR_MOVIMENTO NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    PLANO_CONTA_DESCRICAO VARCHAR(80),
    CENTRO_CUSTO_DESCRICAO VARCHAR(80),
    ESTORNO_DATA DATE,
    ESTORNO_MOTIVO VARCHAR(5000),
    DESCRICAO_LANCAMENTO VARCHAR(80),
    COD_FORNECEDOR VARCHAR(20))
AS
declare variable TABELA_ESTORNO varchar(80);
declare variable COD_TABELA_ESTORNO varchar(80);
declare variable DESCRICAO varchar(80);
declare variable SQL varchar(5000);
begin
   /*========================================================
     Mostra os detalhes do fluxo de caixa...
     as entradas , saidas e estornos
   =========================================================*/
   if (SQL_WHERE is null) then
        SQL_WHERE = '';

    SQL =
      ' select MOVIMENTO_CAIXA.COD_MOVIMENTO_CAIXA'
      ||  '     , MOVIMENTO_CAIXA.COD_PLANO_CONTA     '
      ||  '     , MOVIMENTO_CAIXA.COD_USUARIO_LANCAMENTO '
      ||  '     , MOVIMENTO_CAIXA.COD_FILIAL             '
      ||  '     , MOVIMENTO_CAIXA.COD_CONTA_BANCARIA     '
      ||  '     , MOVIMENTO_CAIXA.COD_CENTRO_CUSTO       '
      ||  '     , MOVIMENTO_CAIXA.COD_ESTORNO            '
      ||  '     , MOVIMENTO_CAIXA.COD_FECHAMENTO         '
      ||  '     , MOVIMENTO_CAIXA.COD_FORNECEDOR         '
      ||  '     , MOVIMENTO_CAIXA.DATA_CAD               '
      ||  '     , MOVIMENTO_CAIXA.HORA_CAD               '
      ||  '     , MOVIMENTO_CAIXA.OBS                    '
      ||  '     , MOVIMENTO_CAIXA.ENTRADA_SAIDA          '
      ||  '     , MOVIMENTO_CAIXA.DATA_MOVIMENTACAO      '
      ||  '     , MOVIMENTO_CAIXA.VALOR_MOVIMENTO        '
      ||  '     , MOVIMENTO_CAIXA.MULTA                  '
      ||  '     , MOVIMENTO_CAIXA.JUROS                  '
      ||  '     , MOVIMENTO_CAIXA.DESCONTO               '
      ||  '     , MOVIMENTO_CAIXA.DESCRICAO              '
      ||  '                                              '
      ||  '     , PLANO_CONTA.DESCRICAO                  '
      ||  '     , CENTRO_CUSTO.DESCRICAO                 '

      ||  '     , CAIXA_ESTORNO.DATA_MOVIMENTACAO        '
      ||  '     , CAIXA_ESTORNO.MOTIVO                   '
      ||  '     , CAIXA_ESTORNO.COD_TABELA_RELACIONADA   '
      ||  '     , CAIXA_ESTORNO.TABELA_RELACIONADA       '

 
      ||  '  from MOVIMENTO_CAIXA                        '
      ||  '     inner join PLANO_CONTA on PLANO_CONTA.COD_PLANO_CONTA = MOVIMENTO_CAIXA.COD_PLANO_CONTA  '
      ||  '     left join CENTRO_CUSTO on CENTRO_CUSTO.COD_CENTRO_CUSTO = MOVIMENTO_CAIXA.COD_CENTRO_CUSTO'
      ||  '     LEFT JOIN CAIXA_ESTORNO ON CAIXA_ESTORNO.COD_CAIXA_ESTORNO = MOVIMENTO_CAIXA.COD_ESTORNO '
      ||  ' WHERE 0 = 0 ';

       if (SQL_WHERE <> '') then
          SQL = SQL || SQL_WHERE;

       for EXECUTE STATEMENT :SQL
       INTO  :COD_MOVIMENTO_CAIXA, :COD_PLANO_CONTA, :COD_USUARIO_LANCAMENTO, :COD_FILIAL
           , :COD_CONTA_BANCARIA, :COD_CENTRO_CUSTO, :COD_ESTORNO, :COD_FECHAMENTO, :COD_FORNECEDOR
           , :DATA_CAD, :HORA_CAD, :OBS, :ENTRADA_SAIDA, :DATA_MOVIMENTACAO
           , :VALOR_MOVIMENTO, :MULTA, :JUROS, :DESCONTO, :DESCRICAO,  :PLANO_CONTA_DESCRICAO
           , :CENTRO_CUSTO_DESCRICAO, :ESTORNO_DATA, :ESTORNO_MOTIVO
           , :COD_TABELA_ESTORNO, :TABELA_ESTORNO DO
       BEGIN
            /*======================================
              a movimentacao de caixa pode vir de varias tabelas do banco de daods
              abaixo busca os delahtes da transação verificando  codigo da movimentacao nas tabelas
              que movimentam o caixa
            ========================================*/

          DESCRICAO_LANCAMENTO = '';

          if (:DESCRICAO_LANCAMENTO = '') then
          begin

             select coalesce( CONTAS_PAGAR.DESCRICAO , '')
             from contas_pagar
             where CONTAS_PAGAR.COD_MOVIMENTO_CAIXA = :COD_MOVIMENTO_CAIXA
             into :DESCRICAO_LANCAMENTO;

              /*===================================
                 se for um estorno busca os dados com base na informação do estorno
              =================================== */
             if ((:COD_ESTORNO is not null) and (:TABELA_ESTORNO = 'CONTAS_PAGAR')) then
             begin
                 select coalesce( CONTAS_PAGAR.DESCRICAO , '')
                 from contas_pagar
                 where CONTAS_PAGAR.COD_CONTA_PAGAR = :COD_TABELA_ESTORNO
                 into :DESCRICAO_LANCAMENTO;
             end

          end

          if (:DESCRICAO_LANCAMENTO = '') then
          begin
             select COALESCE( TIPO_COBRANCA.DESCRICAO , '')
             from ARRECADACAO
                inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
             where arrecadacao.COD_CAIXA_MOVIMENTACAO = :COD_MOVIMENTO_CAIXA
             into :DESCRICAO_LANCAMENTo;

              /*===================================
                 se for um estorno busca os dados com base na informação do estorno
              =================================== */
             if ((:COD_ESTORNO is not null) and (:TABELA_ESTORNO = 'ARRECADACAO')) then
             begin
                select COALESCE( TIPO_COBRANCA.DESCRICAO , '')
                from ARRECADACAO
                   inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
                where arrecadacao.COD_ARRECADACAO = :COD_TABELA_ESTORNO
                into :DESCRICAO_LANCAMENTO;
             end

          end

          if (:DESCRICAO_LANCAMENTO = '') then
          BEGIN
             DESCRICAO_LANCAMENTO = :DESCRICAO;
          END

          SUSPEND;

       END
end^


ALTER PROCEDURE PROC_CALCULA_IDADE (
    DATA_ATUAL DATE,
    DATA_NASC DATE)
RETURNS (
    IDADE VARCHAR(100),
    ANO_IDADE INTEGER,
    MES_IDADE INTEGER,
    DIA_IDADE INTEGER)
AS
declare variable ANO_ATUAL integer = 0;
declare variable MES_ATUAL integer = 0;
declare variable DIA_ATUAL integer = 0;
declare variable ANO_NASC integer = 0;
declare variable MES_NASC integer = 0;
declare variable DIA_NASC integer = 0;
begin

/*==================================================
  Retorna as informações da idade.
  retorna o ano , mes , dia para serem usados separadamente para calculos
  alem da idade descritiva "25 ano(s) 11 mes(s) 6 dia(s)"

  O paramentro de entra DATA_ATUAL pode ser qualquer data
  pode ser usada para saber qtos anos a pessoa tinha ou vai ter em uma deterninada data

Daniel Azevedo 25-01-2013
===================================================*/

    if (DATA_ATUAL is null) then
       DATA_ATUAL = current_date;

    idade     = '';
    ANO_IDADE = 0;
    MES_IDADE = 0;
    DIA_IDADE = 0;
    if (Data_nasc is null) then
    begin
       EXIT;
    end

    ANO_ATUAL = extract(year from :DATA_ATUAL);
    MES_ATUAL = extract(month from :DATA_ATUAL);
    DIA_ATUAL = extract(day from :DATA_ATUAL);

    ANO_nasc = extract(year from :Data_nasc);
    mes_nasc = extract(month from :Data_nasc);
    Dia_nasc = extract(day from :Data_nasc);

    ANO_IDADE = ANO_ATUAL - ANO_nasc ;

    If ((MES_ATUAL < mes_nasc) or
       ((MES_ATUAL = mes_nasc) and (DIA_ATUAL < Dia_nasc)) ) then
    begin
         ANO_IDADE = ANO_IDADE - 1;
    end

    If (MES_ATUAL < mes_nasc) then
    begin
      MES_IDADE = 12 - (MES_ATUAL);
    end
    else
    if (MES_ATUAL > mes_nasc) then
    begin
      MES_IDADE = MES_ATUAL - mes_nasc;
      If (DIA_ATUAL < Dia_nasc) then
      begin
         MES_IDADE = MES_IDADE - 1;
      end
    end

    If (DIA_ATUAL < Dia_nasc) then
    begin
      DIA_IDADE = DIA_ATUAL;
    end
    else
    begin
      DIA_IDADE = DIA_ATUAL - Dia_nasc;
    end

    idade = Cast(ANO_IDADE as varchar(5))||' ano(s) '||
            Cast(MES_IDADE as varchar(2))||' mes(s) '||
            Cast(DIA_IDADE as varchar(2))||' dia(s)';
   suspend;
end^


ALTER PROCEDURE PROC_CALCULA_RATEIO (
    VALOR_ARRECADADO NUMERIC(15,2),
    CODIGO_SINDICAL VARCHAR(30))
RETURNS (
    VALOR_DA_GUIA NUMERIC(15,2),
    VALOR_SINDICATO NUMERIC(15,2),
    VALOR_FEDERACAO NUMERIC(15,2),
    VALOR_CONFEDERACAO NUMERIC(15,2),
    VALOR_MINIST_TRABALHO NUMERIC(15,2),
    COD_REPASSE_DEVERGENTE VARCHAR(1))
AS
declare variable VALOR_TOTAL_GUIA numeric(15,2);
declare variable PERC_SINDICATO numeric(15,2);
declare variable PERC_FEDERACAO numeric(15,2);
declare variable PERC_CONFEDERACAO numeric(15,2);
declare variable PERC_MINIST_TRABALHO numeric(15,2);
declare variable COD_REPASSE_FEDERACAO varchar(10);
declare variable COD_REPASSE_CONFEDERECAO varchar(10);
declare variable COD_REPASSE_SINDICATO varchar(10);
declare variable TIPO_ENTIDADE integer;
declare variable COD_SINDICAL_NO_REGISTRO varchar(30);
begin
/*

codigo Sidical
915 005 093 07221 5-- DV
 |   |   |    |------ Codigo do sindicato
 |   |   |----------- Codigo da Federacao
 |   |--------------- Codigo da Confederacao
 |------------------- Código da Central sindical


|-----------|------------|--------------|-----------------------|
| Sindicato | Federacao  | Confederacao |Ministerio do trabalho |
|-----------|------------|--------------|-----------------------|
|  60%      |   15%      |  5%          | 20%                   |
|-----------|------------|--------------|-----------------------|
|  60%      |   Na Falta |  20%         | 20%                   |
|-----------|------------|--------------|-----------------------|
|  60%      |   Na Falta |  Na Falta    | 40%                   |
|-----------|------------|--------------|-----------------------|
|  60%      |   20%      |  Na Falta    | 20%                   |
|-----------|------------|--------------|-----------------------|
|  Na Falta |   60%      |  20%         | 20%                   |
|-----------|------------|--------------|-----------------------|
|  Na Falta |   Na Falta |  80%         | 20%                   |
|-----------|------------|--------------|-----------------------|
|  Na Falta |   80%      |  Na Falta    | 20%                   |
|-----------|------------|--------------|-----------------------|
|  Na Falta |   Na Falta |  Na Falta    | 100%                  |
|-----------|------------|--------------|-----------------------|

*/
  /*============= Extrai os codigos das entidade no codigo sindical ========*/
  COD_REPASSE_CONFEDERECAO =  substring(CODIGO_SINDICAL from  4 for 3 );
  COD_REPASSE_FEDERACAO    =  substring(CODIGO_SINDICAL from  7 for 3 );
  COD_REPASSE_SINDICATO    =  substring(CODIGO_SINDICAL from 10 for 5 );

  /*=========== Coloca os percentuais de repasse de acordo coma as regras ========*/

  if ( (COD_REPASSE_SINDICATO  <> '00000') and
       (COD_REPASSE_FEDERACAO    <> '000') and
       (COD_REPASSE_CONFEDERECAO <> '000') )then
  begin
     PERC_SINDICATO       = 60;
     PERC_FEDERACAO       = 15;
     PERC_CONFEDERACAO    = 5;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem federacao ========*/
  if ( (COD_REPASSE_SINDICATO   <>  '00000') and
       (COD_REPASSE_FEDERACAO    =  '000')   and
       (COD_REPASSE_CONFEDERECAO <> '000') )then
  begin
     PERC_SINDICATO       = 60;
     PERC_FEDERACAO       = 0;
     PERC_CONFEDERACAO    = 20;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem federacao e confederacao ========*/
  if ( (COD_REPASSE_SINDICATO    <> '00000') and
       (COD_REPASSE_FEDERACAO    =  '000')   and
       (COD_REPASSE_CONFEDERECAO =  '000') )then
  begin
     PERC_SINDICATO       = 60;
     PERC_FEDERACAO       = 0;
     PERC_CONFEDERACAO    = 0;
     PERC_MINIST_TRABALHO = 40;
  end

  /*=========== sem confederacao ========*/
  if ( (COD_REPASSE_SINDICATO    <> '00000') and
       (COD_REPASSE_FEDERACAO    <> '000')   and
       (COD_REPASSE_CONFEDERECAO =  '000') )then
  begin
     PERC_SINDICATO       = 60;
     PERC_FEDERACAO       = 20;
     PERC_CONFEDERACAO    = 0;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem Sindicato ========*/
  if ( (COD_REPASSE_SINDICATO    = '00000') and
       (COD_REPASSE_FEDERACAO    <>  '000')   and
       (COD_REPASSE_CONFEDERECAO <>  '000') )then
  begin
     PERC_SINDICATO       = 0;
     PERC_FEDERACAO       = 60;
     PERC_CONFEDERACAO    = 20;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem Sindicato e federacao ========*/
  if ( (COD_REPASSE_SINDICATO    = '00000') and
       (COD_REPASSE_FEDERACAO    =  '000')   and
       (COD_REPASSE_CONFEDERECAO <>  '000') )then
  begin
     PERC_SINDICATO       = 0;
     PERC_FEDERACAO       = 0;
     PERC_CONFEDERACAO    = 80;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem Sindicato e confederacao ========*/
  if ( (COD_REPASSE_SINDICATO    =  '00000') and
       (COD_REPASSE_FEDERACAO    <> '000')   and
       (COD_REPASSE_CONFEDERECAO =  '000') )then
  begin
     PERC_SINDICATO       = 0;
     PERC_FEDERACAO       = 80;
     PERC_CONFEDERACAO    = 0;
     PERC_MINIST_TRABALHO = 20;
  end

  /*=========== sem Sindicato e confederacao ========*/
  if ( (COD_REPASSE_SINDICATO    =  '00000') and
       (COD_REPASSE_FEDERACAO    =  '000')   and
       (COD_REPASSE_CONFEDERECAO =  '000') )then
  begin
     PERC_SINDICATO       = 0;
     PERC_FEDERACAO       = 0;
     PERC_CONFEDERACAO    = 0;
     PERC_MINIST_TRABALHO = 100;
  end

  /*================================================
  verifica o tipo da entidade
    1 = SINDICATO
    2 = FEDERAÇÃO
    3 = CONFEDERAÇÃO
    4 = CENTRAL SINDICAL
  ================================================*/

  select registro.TIPO_DA_ENTIDADE
       , REGISTRO.CODIGO_SINDICAL
  from REGISTRO
  into :TIPO_ENTIDADE, :COD_SINDICAL_NO_REGISTRO;

  /*=========== se for uma Federacao - Calcula o valor da guia ================== */
  if ( (TIPO_ENTIDADE = 2) and (PERC_FEDERACAO > 0) ) then
  begin
     VALOR_DA_GUIA = ( VALOR_ARRECADADO / (PERC_FEDERACAO / 100));

     /*============ verifica se o codigo do repasse é igual ao regitro do sistema ============*/
     COD_SINDICAL_NO_REGISTRO = substring(COD_SINDICAL_NO_REGISTRO from  7 for 3 );

     COD_REPASSE_DEVERGENTE = 'F';
     if (COD_SINDICAL_NO_REGISTRO <> COD_REPASSE_FEDERACAO) then
        COD_REPASSE_DEVERGENTE = 'T';
  end

  /*============ for uma confederacao - Calcula o valor da guia =============*/
  if ( (TIPO_ENTIDADE = 3)  and (PERC_CONFEDERACAO > 0)) then
  begin
     VALOR_DA_GUIA = ( VALOR_ARRECADADO / (PERC_CONFEDERACAO / 100));

     /*============ verifica se o codigo do repasse é igual ao regitro do sistema ============*/
     COD_SINDICAL_NO_REGISTRO = substring(COD_SINDICAL_NO_REGISTRO from  4 for 3 );

     COD_REPASSE_DEVERGENTE = 'F';
     if (COD_SINDICAL_NO_REGISTRO <> COD_REPASSE_CONFEDERECAO) then
        COD_REPASSE_DEVERGENTE = 'T';
  end

  if (PERC_SINDICATO > 0) then
     VALOR_SINDICATO       = VALOR_DA_GUIA * ( PERC_SINDICATO       / 100 );

  if (PERC_FEDERACAO > 0) then
     VALOR_FEDERACAO       = VALOR_DA_GUIA * ( PERC_FEDERACAO       / 100 );

  if (PERC_CONFEDERACAO > 0) then
     VALOR_CONFEDERACAO    = VALOR_DA_GUIA * ( PERC_CONFEDERACAO    / 100 );

  if (PERC_MINIST_TRABALHO > 0) then
     VALOR_MINIST_TRABALHO = VALOR_DA_GUIA * ( PERC_MINIST_TRABALHO / 100 );

  suspend;
end^


ALTER PROCEDURE PROC_CALCULA_VALOR_FUNCIONARIO (
    COMPETENCIA INTEGER,
    NUMERO_EMPREGADOS INTEGER,
    COD_TIPO_COBRANCA INTEGER)
RETURNS (
    TOTAL_FUNCIONARIO INTEGER,
    VALOR_SALARIO NUMERIC(15,2),
    VALOR_FINAL NUMERIC(15,3),
    TIPO_CALCULO VARCHAR(80))
AS
begin

  /*=============================================
   Calcula o valor com base na quantidade de funcionarios
   e o valor do salario da competencia informada
   SALARIOS contem as informa??es de valores de salarios
  ==========================================*/

  TOTAL_FUNCIONARIO = :NUMERO_EMPREGADOS;
  VALOR_SALARIO = 0;
  VALOR_FINAL   = 0;

  /* =================================
    Seleciona o maior valor do salario pela competencia
  =================================== */
  for
     select max(SALARIOS.SALARIO_MINIMO_CLASSE)
     from salarios
     where EXTRACT( year from  SALARIOS.REFERENCIA) = :COMPETENCIA
     into :VALOR_SALARIO do
  begin
     select TIPO_COBRANCA.TIPO_CALCULO_COBRANCA
     from TIPO_COBRANCA
     where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
     into :TIPO_CALCULO;

     /*========== Calculo para o valor de guias sindicais para o numero de funcionarios ==========*/
     if ( UPPER(TIPO_CALCULO) = 'SINDICAL') then
        VALOR_FINAL = ((:NUMERO_EMPREGADOS * VALOR_SALARIO) / 30) ;
  end

  suspend;
end^


ALTER PROCEDURE PROC_CLUBE_ASSOCIADO
RETURNS (
    MATRICULA INTEGER,
    NOME VARCHAR(80),
    CATEGORIA VARCHAR(80),
    LIBERADO VARCHAR(1),
    MOTIVO_BLOQUEIO VARCHAR(255),
    CODIGO_BARRA VARCHAR(120),
    FOTO VARCHAR(80),
    CONVITE VARCHAR(1))
AS
declare variable STATUS varchar(80);
declare variable STATUS_CLUBE varchar(1);
declare variable STATUS_DEPENDENTE varchar(80);
declare variable COD_MENSALIDADE integer;
declare variable MENSALIDADES_ATRASO integer;
declare variable CONVITE_VALIDADE date;
begin
  /*===================================
    O status do assocido deve permitir usar o clube
    o associado nao pode estar com mais de 4 mensalidades atrasadas

  =====================================*/

  select CONFIGURACAO_ASSOCIADO.COD_TIPO_COBRANCA_MENSALIDADE
  from CONFIGURACAO_ASSOCIADO
  into :COD_MENSALIDADE;

   for
      select ASSOCIADO.CODIGO
           , ASSOCIADO.NOME
           , SITUACAO.DESCRICAO
           , SITUACAO.CLUBE
           , 'Associado'
           , ASSOCIADO.COD_BARRA_CARTEIRA
           , ASSOCIADO.FOTO
     from ASSOCIADO
        inner join SITUACAO on SITUACAO.CODIGO = ASSOCIADO.STATUS
     into :MATRICULA, :NOME, :STATUS , :STATUS_CLUBE, :CATEGORIA, :CODIGO_BARRA, :FOTO do
   begin

      LIBERADO        = 'T';
      MOTIVO_BLOQUEIO = '';
      CONVITE         = 'F';

     if (:STATUS_CLUBE = 'N') then
     begin
        LIBERADO = 'F';
        MOTIVO_BLOQUEIO = 'O status ' || :STATUS || ' não permite o acesso ao clube';
     end

     /* se o status estiver ok verifica a inadimplencia*/
     if (:STATUS_CLUBE = 'S') then
     begin
        select count (ARRECADACAO.COD_ARRECADACAO)
        from ARRECADACAO
        where ARRECADACAO.TABELA_RELACIONADA = 'ASSOCIADO'
          and ARRECADACAO.COD_TABELA_RELACIONADA =  cast (:matricula as varchar (80) )
          and ARRECADACAO.COD_TIPO_COBRANCA = :COD_MENSALIDADE
          and ARRECADACAO.DATA_PAGAMENTO is null
          and ARRECADACAO.DATA_VENCIMENTO < CURRENT_DATE
          and ( ARRECADACAO.EXCLUIDA is null or ARRECADACAO.EXCLUIDA = 'F' )
        into :MENSALIDADES_ATRASO;

        if (:MENSALIDADES_ATRASO > 4) then
        begin
           LIBERADO = 'F';
           MOTIVO_BLOQUEIO = 'Existem ' || :MENSALIDADES_ATRASO || ' mensalidades em atraso';
        end

     end

     suspend;

     for
        select DEPENDENTE.NOME
             , STATUS_DEPENDENTE.DESCRICAO
             , 'Dependente'
             , DEPENDENTE.COD_BARRA_CARTEIRA
             , DEPENDENTE.FOTO
        from DEPENDENTE
           inner join STATUS_DEPENDENTE on STATUS_DEPENDENTE.COD_STATUS_DEPENDENTE = DEPENDENTE.COD_STATUS
        where DEPENDENTE.ASSOCIADO = :MATRICULA
        into  :NOME, :STATUS_DEPENDENTE , :CATEGORIA, :CODIGO_BARRA, :FOTO do
        begin
           CONVITE  = 'F';

           if (:STATUS_DEPENDENTE = 'INATIVO') then
           begin
              LIBERADO = 'F';
              MOTIVO_BLOQUEIO = 'O status ' || :STATUS_DEPENDENTE || ' não permite o acesso ao clube';
           end
          suspend;
        end
   end


   /*==============================================
      busca os convites com validade dos ultimos 3 meses
      caso alguem tente entrar com o convite vencido o sistema avisa
   ================================================*/

   for
      select CONVITE.CODIGO
           , CONVITE.NOME
           , 'Convite: ' || CONVITE.TIPOCONVIDADO
           , CONVITE.DATAVALIDADE
           , CONVITE.CODIGOBARRAS

      from CONVITE
      where CONVITE.DATAVALIDADE >=   ADDMONTH(CURRENT_DATE , - 3)
      into :MATRICULA, :NOME, :CATEGORIA, :CONVITE_VALIDADE, :CODIGO_BARRA do
      begin
         LIBERADO        = 'T';
         MOTIVO_BLOQUEIO = '';
         FOTO            = '';
         CONVITE         = 'T';

        if (:CONVITE_VALIDADE < CURRENT_DATE) then
        begin
           LIBERADO = 'F';
           MOTIVO_BLOQUEIO = 'Convite Vencido. Validade até ' || EXTRACT(DAY   from :CONVITE_VALIDADE) ||'/'||
                                                                 EXTRACT(MONTH from :CONVITE_VALIDADE) ||'/'||
                                                                 EXTRACT(YEAR  from :CONVITE_VALIDADE);
        end
        suspend;
      end

end^


ALTER PROCEDURE PROC_COBRANCA_DADOS_CLIENTE (
    COD_COBRANCA INTEGER)
RETURNS (
    CPF_CNPJ VARCHAR(14),
    NOME VARCHAR(200),
    TELE1 VARCHAR(20),
    TELE2 VARCHAR(20),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_CEP CHAR(8),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE_COD_IBGE INTEGER,
    ENDERECO_COMPLETO VARCHAR(200),
    EMAIL VARCHAR(80))
AS
declare variable TABELA_RELACIONADA varchar(80);
declare variable COD_TABELA_RELACIONADA varchar(80);
declare variable FONE varchar(20);
begin
  select COBRANCA.TABELA_RELACIONADA
       , COBRANCA.COD_TABELA_RELACIONADA
  from COBRANCA
  where cobranca.COD_COBRANCA = :COD_COBRANCA
  into :TABELA_RELACIONADA , :COD_TABELA_RELACIONADA;

  /*============= se a tabela relacionada com a cobranca for EMPRESA =========*/
  if (TABELA_RELACIONADA = 'EMPRESA') then
  begin
     SELECT EMPRESA.CNPJ
          , EMPRESA.RAZAOSOCIAL
          , EMPRESA.ENDERECO_LOGRADOURO
          , EMPRESA.ENDERECO_NUMERO
          , EMPRESA.ENDERECO_COMPLEMENTO
          , EMPRESA.ENDERECO_BAIRRO
          , EMPRESA.ENDERECO_CIDADE
          , EMPRESA.ENDERECO_UF
          , EMPRESA.ENDERECO_CEP
          , EMPRESA.ENDERECO_CIDADE_COD_IBGE
          , EMPRESA.EMAIL

     from EMPRESA
     where empresa.CNPJ = :COD_TABELA_RELACIONADA
     into :CPF_CNPJ, :NOME, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO,
          :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENDERECO_CIDADE_COD_IBGE, :EMAIL;
  end


  /*============= se a tabela relacionada com a cobranca for ENTIDADE_SINDICAL  =========*/
  if (TABELA_RELACIONADA = 'EMPRESA') then
  begin
     SELECT ENTIDADE_SINDICAL.CNPJ
          , ENTIDADE_SINDICAL.RAZAOSOCIAL
          , ENTIDADE_SINDICAL.ENDERECO_LOGRADOURO
          , ENTIDADE_SINDICAL.ENDERECO_NUMERO
          , ENTIDADE_SINDICAL.ENDERECO_COMPLEMENTO
          , ENTIDADE_SINDICAL.ENDERECO_BAIRRO
          , ENTIDADE_SINDICAL.ENDERECO_CIDADE
          , ENTIDADE_SINDICAL.ENDERECO_UF
          , ENTIDADE_SINDICAL.ENDERECO_CEP
          , ENTIDADE_SINDICAL.ENDERECO_CIDADE_COD_IBGE
     from ENTIDADE_SINDICAL
     where ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL = :COD_TABELA_RELACIONADA
     into :CPF_CNPJ, :NOME, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO,
          :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENDERECO_CIDADE_COD_IBGE;
  end

  /*============= se a tabela relacionada com a cobranca for Associado =========*/
  if (TABELA_RELACIONADA = 'ASSOCIADO') then
  begin
     SELECT ASSOCIADO.CPF
          , ASSOCIADO.NOME
          , ASSOCIADO.ENDERECO_LOGRADOURO
          , ASSOCIADO.ENDERECO_NUMERO
          , ASSOCIADO.ENDERECO_COMPLEMENTO
          , ASSOCIADO.BAIRRO
          , ASSOCIADO.CIDADE
          , ASSOCIADO.UF
          , ASSOCIADO.CEP
          , ASSOCIADO.ENDERECO_CIDADE_COD_IBGE
     from ASSOCIADO
     where ASSOCIADO.CODIGO = :COD_TABELA_RELACIONADA
     into :CPF_CNPJ, :NOME, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO,
          :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENDERECO_CIDADE_COD_IBGE;
  end

  /*============= se a tabela relacionada com a cobranca for Comerciario =========*/
  if (TABELA_RELACIONADA = 'COMERCIARIO') then
  begin
     SELECT COMERCIARIO.CPF
          , COMERCIARIO.NOME
          , COMERCIARIO.ENDERECO_LOGRADOURO
          , COMERCIARIO.ENDERECO_NUMERO
          , COMERCIARIO.ENDERECO_COMPLEMENTO
          , COMERCIARIO.BAIRRO
          , COMERCIARIO.CIDADE
          , COMERCIARIO.UF
          , COMERCIARIO.CEP
          , 0
     from COMERCIARIO
     where COMERCIARIO.CODIGO = :COD_TABELA_RELACIONADA
     into :CPF_CNPJ, :NOME, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO,
          :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENDERECO_CIDADE_COD_IBGE;
  end

  /*=========== busca os 2 primeiros telefones ==============*/
  TELE1 = '';
  TELE2 = '';

  for
     select first 2 TELEFONE.TELEFONE
     from TELEFONE
     where telefone.TABELA_RELACIONADA = :TABELA_RELACIONADA
       and TELEFONE.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
     order by TELEFONE.ORDEM
     into :fone do
  begin
     if (TELE1 = '') then
     begin
        TELE1 = FONE;
     end
     else
        TELE2 = FONE;
  end

  ENDERECO_COMPLETO = COALESCE(ENDERECO_LOGRADOURO                , '' ) ||
                      COALESCE( ', Nº: '  || ENDERECO_NUMERO      , '' ) ||
                      COALESCE( ' - '     || ENDERECO_COMPLEMENTO , '' ) ||
                      COALESCE( ', '      || ENDERECO_BAIRRO      , '' ) ||
                      COALESCE( ', '      || ENDERECO_CIDADE      , '' ) ||
                      COALESCE( ', Cep: ' || ENDERECO_CEP         , '' );
  suspend;
end^


ALTER PROCEDURE PROC_CONFEDERATIVA_AGRUPADA
AS
declare variable qte integer;
declare variable total numeric(15,2);
declare variable guia numeric(15,2);
declare variable parcela numeric(15,2);
declare variable diferenca numeric(15,2);
declare variable data date;
declare variable usuario integer;
 /*==========================================
  Seleciona todas as guias confederativas agrupadas
  Divide o valor por igual nas guias agrupadas
  SE a divisao nao for igual coloca a diferenca em uma das guias
 ============================================*/
begin
   FOR
      SELECT AGRUPADA,DATA_BAIXA,USUARIO_BAIXA
      FROM CONFEDERATIVA
      WHERE agrupada IS NOT NULL
           AND data_baixa IS NOT NULL
      ORDER by agrupada
      INTO :GUIA, DATA, USUARIO DO
   BEGIN
       SELECT COUNT(codigo)
       FROM confederativa
       WHERE agrupada = :GUIA
       INTO :QTE;

       SELECT SUM(VALOR_BAIXA)
       FROM confederativa
       WHERE AGRUPADA = :GUIA
       INTO :TOTAL;

       PARCELA=:TOTAL / :QTE;
       DIFERENCA=(:TOTAL - (:PARCELA * :QTE));

       UPDATE CONFEDERATIVA SET VALOR =:PARCELA, VALOR_BAIXA=:PARCELA, DATA_BAIXA=:DATA, USUARIO_BAIXA=:usuario
       WHERE AGRUPADA =:GUIA;

       IF (DIFERENCA <> 0) then
       BEGIN
          UPDATE CONFEDERATIVA SET VALOR =(:PARCELA+:DIFERENCA)
          WHERE AGRUPADA =:GUIA AND CODIGO =:GUIA;
       END

   END
  SUSPEND;
END^


ALTER PROCEDURE PROC_CONTA_BANC_MOV_DETALHADO
RETURNS (
    CONTA_BANCARIA_DATA_SALDO DATE,
    CONTA_BANCARIA_SALDO_INICIAL NUMERIC(15,2),
    CONTA_BANCARIA_CODIGO VARCHAR(10),
    CONTA_BANCARIA_DESCRICAO VARCHAR(80),
    VALOR_REALIZACAO NUMERIC(15,2),
    DATA_REALIZACAO DATE,
    ENTRADA_SAIDA VARCHAR(1),
    DESCRICAO VARCHAR(10000),
    SALDO_PARCIAL NUMERIC(15,2),
    VALOR_ENTRADA NUMERIC(15,2),
    VALOR_SAIDA NUMERIC(15,2),
    COD_PLANO_CONTA INTEGER,
    PLANO_CONTA_DESCRITIVO VARCHAR(200),
    CODIGO_DESCRITIVO VARCHAR(80),
    FORMA_PAGAMENTO VARCHAR(80))
AS
declare variable COD_ARRECADACAO numeric(15,0);
declare variable NOME_PAGADOR varchar(400);
declare variable TABELA_RELACIONADA varchar(400);
declare variable DETALHAR_DESCRICAO varchar(1);
declare variable NUM_CHEQUE varchar(30);
begin
   /*==============================================
     seleciona os  movimentos das contas bancarias,
     contas a pagar, Arrecadacao, Ajuste de caixa
   ================================================*/

   /*===============================================
      setar esta variavel para T se quiser detalhar as descricao do debico
      com o nome do associado / empresa
     ===============================================*/
   DETALHAR_DESCRICAO = 'T';

   for
      select CONTA_BANCARIA.COD_CONTA
           , CONTA_BANCARIA.DESCRICAO
           , CONTA_BANCARIA.SALDO_INICIAL
           , CONTA_BANCARIA.SALDO_INICIAL_DATA

      from CONTA_BANCARIA
      into :CONTA_BANCARIA_CODIGO, :CONTA_BANCARIA_DESCRICAO, :CONTA_BANCARIA_SALDO_INICIAL, :CONTA_BANCARIA_DATA_SALDO do
   begin

      SALDO_PARCIAL = 0;
      VALOR_ENTRADA = 0;
      VALOR_SAIDA   = 0;

      SALDO_PARCIAL = :CONTA_BANCARIA_SALDO_INICIAL;

      /*================ seleciona as contas a pagar =======================*/
      for
         select 'S'
              , CONTAS_PAGAR.DESCRICAO
              , COALESCE( CONTAS_PAGAR.VALOR_REALIZACAO , 0 )
              , CONTAS_PAGAR.DATA_REALIZACAO

              , PLANO_CONTA.COD_PLANO_CONTA
              , COALESCE(PLANO_CONTA.CODIGO_DESCRITIVO , '' ) ||'     '||
                COALESCE(PLANO_CONTA.DESCRICAO , '' )
             , PLANO_CONTA.CODIGO_DESCRITIVO
             , FORMAPAGAMENTO.DESCRICAO

         from CONTAS_PAGAR
            left join PLANO_CONTA on PLANO_CONTA.COD_PLANO_CONTA = CONTAS_PAGAR.COD_PLANO_CONTA
            left join FORMAPAGAMENTO on FORMAPAGAMENTO.CODIGO = CONTAS_PAGAR.COD_FORMA_PAGAMENTO

         where CONTAS_PAGAR.DATA_REALIZACAO BETWEEN :CONTA_BANCARIA_DATA_SALDO and CURRENT_DATE
            and contas_pagar.COD_CONTA_BANCARIA_MOVIMENTO = :CONTA_BANCARIA_CODIGO
         order by CONTAS_PAGAR.DATA_REALIZACAO

         into :ENTRADA_SAIDA, :DESCRICAO, :VALOR_REALIZACAO, :DATA_REALIZACAO, :COD_PLANO_CONTA
            , :PLANO_CONTA_DESCRITIVO, CODIGO_DESCRITIVO, :FORMA_PAGAMENTO do
      begin
         VALOR_SAIDA      = VALOR_REALIZACAO * -1;
         VALOR_ENTRADA    = 0;

         VALOR_REALIZACAO = VALOR_REALIZACAO * -1;
         SALDO_PARCIAL    = SALDO_PARCIAL + VALOR_REALIZACAO;
         suspend;
      end

      /*============ seleciona as receitas da tabela de arrecadacao =============*/

      for
         select 'E'
             , TIPO_COBRANCA.DESCRICAO
             , COALESCE( ARRECADACAO.VALOR_CREDITADO , 0 )
             , ARRECADACAO.DATA_CREDITO

             , PLANO_CONTA.COD_PLANO_CONTA
             , COALESCE(PLANO_CONTA.CODIGO_DESCRITIVO , '' ) ||'     '||
               COALESCE(PLANO_CONTA.DESCRICAO , '' )
             , ARRECADACAO.COD_ARRECADACAO
             , ARRECADACAO.TABELA_RELACIONADA

             , coalesce( FORMAPAGAMENTO.DESCRICAO , 'PGTO BANCARIO - OUTROS')

         from ARRECADACAO
            inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
            left join PLANO_CONTA on PLANO_CONTA.COD_PLANO_CONTA = TIPO_COBRANCA.COD_PLANO_CONTA
            left join FORMAPAGAMENTO on FORMAPAGAMENTO.CODIGO = ARRECADACAO.COD_FORMA_PAGAMENTO


         where ARRECADACAO.DATA_CREDITO BETWEEN :CONTA_BANCARIA_DATA_SALDO and CURRENT_DATE
            and ARRECADACAO.COD_CONTA_BANCARIA_MOVIMENTO = :CONTA_BANCARIA_CODIGO
            and ARRECADACAO.EXCLUIDA is null
            and ARRECADACAO.VALOR_PAGAMENTO > 0

         order by ARRECADACAO.DATA_CREDITO

         into :ENTRADA_SAIDA, :DESCRICAO, :VALOR_REALIZACAO, :DATA_REALIZACAO, :COD_PLANO_CONTA ,
              :PLANO_CONTA_DESCRITIVO, :COD_ARRECADACAO, :TABELA_RELACIONADA, :FORMA_PAGAMENTO do
      begin
         VALOR_ENTRADA = VALOR_REALIZACAO;
         VALOR_SAIDA   = 0;

         SALDO_PARCIAL = SALDO_PARCIAL  + VALOR_REALIZACAO;

         /*===========================================================
           Descricao detalhada - Pedido de ituiutaba - Sair o nome do pagador no movimento de caixa
         =============================================================*/
         if (:DETALHAR_DESCRICAO = 'T') then
         begin
            if (:TABELA_RELACIONADA = 'ASSOCIADO')  then
            begin
               select ASSOCIADO.CODIGO ||'-'||
                       ASSOCIADO.NOME
               from ARRECADACAO
                   inner join ASSOCIADO on ASSOCIADO.CODIGO = ARRECADACAO.COD_TABELA_RELACIONADA
               where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO
               INTO :NOME_PAGADOR;
   
               DESCRICAO = :DESCRICAO ||': '|| NOME_PAGADOR;
            end
   
            if (:TABELA_RELACIONADA = 'COMERCIARIO')  then
            begin
               select COMERCIARIO.codigo ||'-'||
                      COMERCIARIO.NOME
               from ARRECADACAO
                   inner join comerciario on comerciario.codigo = ARRECADACAO.COD_TABELA_RELACIONADA
               where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO
               INTO :NOME_PAGADOR;
   
               DESCRICAO = :DESCRICAO ||': '|| NOME_PAGADOR;
            end

            /*=========== busca o nome da empresa =============*/
            if (:TABELA_RELACIONADA =  'EMPRESA') then
            begin
               select EMPRESA.RAZAOSOCIAL
               from ARRECADACAO
                   inner join EMPRESA on EMPRESA.CNPJ = ARRECADACAO.COD_TABELA_RELACIONADA
               where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO
               INTO :NOME_PAGADOR;
   
               DESCRICAO = :DESCRICAO ||': '|| NOME_PAGADOR;
            end
   
             /*============== busca o nome do associado que utilizou algum servico ================*/
             if (TABELA_RELACIONADA = 'LANCAMENTOS_SERVICOS') then
             begin
                   select ASSOCIADO.CODIGO ||'-'||
                          ASSOCIADO.NOME
                   from ARRECADACAO
                       inner join LANCAMENTOS_SERVICOS on LANCAMENTOS_SERVICOS.CODIGO = ARRECADACAO.COD_TABELA_RELACIONADA
                       inner join ASSOCIADO on ASSOCIADO.CODIGO = LANCAMENTOS_SERVICOS.COD_ASSOCIADO
                   where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO
                   INTO :NOME_PAGADOR;
   
                   DESCRICAO = :DESCRICAO ||': '|| NOME_PAGADOR;
             end
   
             /*============== busca o nome do associado que utilizou algum servico ================*/
             if (TABELA_RELACIONADA = 'LANCAMENTOS_SERVICOS_GENERICO') then
             begin
                   select COMERCIARIO.CODIGO ||'-'||
                          COMERCIARIO.NOME
                   from ARRECADACAO
                       inner join LANCAMENTOS_SERVICOS_GENERICO on LANCAMENTOS_SERVICOS_GENERICO.CODIGO = ARRECADACAO.COD_TABELA_RELACIONADA
                       inner join COMERCIARIO on COMERCIARIO.CODIGO = LANCAMENTOS_SERVICOS_GENERICO.COD_COMERCIARIO
                   where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO
                   INTO :NOME_PAGADOR;
   
                   DESCRICAO = :DESCRICAO ||': '|| NOME_PAGADOR;
             end
         end

         /*========= verifica se tem algum cheque vinculado neste debito e mostra a sigla CH ma descricao ===== */
         NUM_CHEQUE = '';
         select CADASTRO_CHEQUE.NUMERO
         from CADASTRO_CHEQUE
         where CADASTRO_CHEQUE.COD_ARRECADACAO = :COD_ARRECADACAO
         into :NUM_CHEQUE;

         if (:NUM_CHEQUE <> '') then
            DESCRICAO = 'ch: '|| :NUM_CHEQUE||' '||:DESCRICAO;

          suspend;
      end

         /*=========== seleciona os valores da do ajuste de caixa =========*/
      for

         select CAIXA_AJUSTE.ENTRADA_SAIDA
              , CAIXA_AJUSTE.JUSTIFICATIVA
              , CAIXA_AJUSTE.VALOR_MOVIMENTO
              , CAIXA_AJUSTE.DATA_MOVIMENTO
              , PLANO_CONTA.COD_PLANO_CONTA
              , COALESCE(PLANO_CONTA.CODIGO_DESCRITIVO , '' ) ||'     '||
                COALESCE(PLANO_CONTA.DESCRICAO , '' )
             ,  COALESCE(FORMAPAGAMENTO.DESCRICAO , 'AJUSTE DE CAIXA')
         from CAIXA_AJUSTE
            left join PLANO_CONTA on PLANO_CONTA.COD_PLANO_CONTA = CAIXA_AJUSTE.COD_PLANO_CONTA
            left join FORMAPAGAMENTO on FORMAPAGAMENTO.CODIGO = CAIXA_AJUSTE.COD_FORMA_PAGAMENTO

         where CAIXA_AJUSTE.DATA_MOVIMENTO BETWEEN :CONTA_BANCARIA_DATA_SALDO and CURRENT_DATE
           and CAIXA_AJUSTE.COD_CONTA_BANCARIA_MOVIMENTO = :CONTA_BANCARIA_CODIGO
         order by CAIXA_AJUSTE.DATA_MOVIMENTO

         into :ENTRADA_SAIDA, :DESCRICAO, :VALOR_REALIZACAO, :DATA_REALIZACAO, :COD_PLANO_CONTA ,
              :PLANO_CONTA_DESCRITIVO, :FORMA_PAGAMENTO do
      begin
         if (:ENTRADA_SAIDA = 'E') then
         begin
            VALOR_ENTRADA = VALOR_REALIZACAO;
            valor_saida   = 0;

            SALDO_PARCIAL = SALDO_PARCIAL  + VALOR_REALIZACAO;
         end
   
         if (:ENTRADA_SAIDA = 'S') then
         begin
            VALOR_SAIDA      = VALOR_REALIZACAO *-1;
            VALOR_ENTRADA    = 0;

            VALOR_REALIZACAO = VALOR_REALIZACAO * -1;
            SALDO_PARCIAL    = SALDO_PARCIAL + VALOR_REALIZACAO ;
         end
   
         SUSPEND;

      end



   end

end^


ALTER PROCEDURE PROC_CONTA_BANC_MOV_FORMA_PGTO (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    CONTA_BANCARIA_CODIGO VARCHAR(20) COLLATE WIN_PTBR)
RETURNS (
    DESCRICAO VARCHAR(80),
    SALDO_ANTERIOR NUMERIC(15,2),
    ENTRADA NUMERIC(15,2),
    SAIDA NUMERIC(15,2),
    SALDO_ATUAL NUMERIC(15,2))
AS
begin

 for
    select FORMAPAGAMENTO.DESCRICAO
    from FORMAPAGAMENTO
    into :DESCRICAO do
    BEGIN
       SALDO_ANTERIOR = 0;
       entrada        = 0;
       SAIDA          = 0 ;
       SALDO_ATUAL    = 0;

       /*===================== pega o saldo anterior do tipo de cobranca que a soma dos valore menos que a data inicial ==============*/
       select COALESCE( sum( PROC_CONTA_BANC_MOV_DETALHADO.VALOR_REALIZACAO) , 0 )
       from PROC_CONTA_BANC_MOV_DETALHADO
       where 0 = 0
          and PROC_CONTA_BANC_MOV_DETALHADO.DATA_REALIZACAO < :DATA_INICIO
          and PROC_CONTA_BANC_MOV_DETALHADO.CONTA_BANCARIA_CODIGO = :CONTA_BANCARIA_CODIGO
          and PROC_CONTA_BANC_MOV_DETALHADO.FORMA_PAGAMENTO = :DESCRICAO
       into :SALDO_ANTERIOR;

       /*============== pega o total de entradas entre o periodo informado ========== */
       select COALESCE( sum( PROC_CONTA_BANC_MOV_DETALHADO.VALOR_REALIZACAO) , 0 )
       from PROC_CONTA_BANC_MOV_DETALHADO
       where 0 = 0
          and PROC_CONTA_BANC_MOV_DETALHADO.DATA_REALIZACAO BETWEEN :DATA_INICIO and :DATA_FIM
          and PROC_CONTA_BANC_MOV_DETALHADO.CONTA_BANCARIA_CODIGO = :CONTA_BANCARIA_CODIGO
          and PROC_CONTA_BANC_MOV_DETALHADO.FORMA_PAGAMENTO = :DESCRICAO
          and PROC_CONTA_BANC_MOV_DETALHADO.ENTRADA_SAIDA = 'E'
       into :ENTRADA;

       /*============== pega o total de saidas entre o perido informado ========== */
       select COALESCE( sum( PROC_CONTA_BANC_MOV_DETALHADO.VALOR_REALIZACAO) , 0 )
       from PROC_CONTA_BANC_MOV_DETALHADO
       where 0 = 0
          and PROC_CONTA_BANC_MOV_DETALHADO.DATA_REALIZACAO BETWEEN :DATA_INICIO and :DATA_FIM
          and PROC_CONTA_BANC_MOV_DETALHADO.CONTA_BANCARIA_CODIGO = :CONTA_BANCARIA_CODIGO
          and PROC_CONTA_BANC_MOV_DETALHADO.FORMA_PAGAMENTO = :DESCRICAO
          and PROC_CONTA_BANC_MOV_DETALHADO.ENTRADA_SAIDA = 'S'
       into :SAIDA;


       /*========== soma tudo inclusive a saida pq ela vem como negativo.. se diminuir ela fica positiva ( - com - = +)=====*/
       SALDO_ATUAL =  :SALDO_ANTERIOR + :ENTRADA  + :SAIDA ;

       if ( (:SALDO_ANTERIOR > 0) or (:SALDO_ATUAL > 0) or (:ENTRADA > 0) or (:SAIDA > 0) ) then
          suspend;

    END
end^


ALTER PROCEDURE PROC_DADOS_PARA_BOLETO (
    CODIGO_ARRECADACAO INTEGER)
RETURNS (
    COD_ARRECADACAO INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    COD_TIPO_COBRANCA INTEGER,
    COD_ARRECADACAO_ACORDO INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    SACADO_CODIGO VARCHAR(20),
    SACADO_CPF_CNPJ VARCHAR(14),
    SACADO_NOME VARCHAR(200),
    SACADO_ENDERECO VARCHAR(80),
    SACADO_NUMERO VARCHAR(80),
    SACADO_COMPLEMENTO VARCHAR(80),
    SACADO_BAIRRO VARCHAR(80),
    SACADO_CEP CHAR(8),
    SACADO_CIDADE VARCHAR(80),
    SACADO_UF VARCHAR(200),
    SACADO_TELEFONE VARCHAR(20),
    SACADO_CONTABILIDADE VARCHAR(5000),
    COD_CNAE VARCHAR(18),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    EXERCICIO VARCHAR(10),
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_DO_DOCUMENTO NUMERIC(15,2),
    VALOR_A_PAGAR NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    OBS VARCHAR(5000),
    MULTA_JUROS_AUTOMATICO VARCHAR(1),
    COMPETENCIA VARCHAR(10),
    DADOS_EMPRESA VARCHAR(500),
    DIAS_CALCULO_JUROS INTEGER,
    COD_BANCO INTEGER,
    PADRAO_BANCARIO VARCHAR(80))
AS
declare variable COMPLEMENTAR varchar(10);
declare variable TABELA_RELACIONADA varchar(80);
declare variable COD_TABELA_RELACIONADA varchar(80);
declare variable OBS_FIXA_TIPO_COBRANCA varchar(5000);
begin

   /*=================================================
      ajusta a arrecadacao com o codigo do convenio e o padrao bancario baseados no
      cadastro do tipo de cobranca
   ===================================================*/
   for
      select CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA
        , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
      from ARRECADACAO
         inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
         inner JOIN CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
      where ARRECADACAO.COD_ARRECADACAO = :CODIGO_ARRECADACAO
      INTO :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO do
   begin
      update arrecadacao set arrecadacao.COD_CONVENIO_COBRANCA = :COD_CONVENIO_COBRANCA
                           , arrecadacao.COD_PADRAO_BANCARIO   = :COD_PADRAO_BANCARIO
      where ARRECADACAO.COD_ARRECADACAO = :CODIGO_ARRECADACAO;
   end


   /*===================================
     seleciona todas as informações necessarios do sacado para gerar
     o boleto bancario
   ====================================*/
   cod_arrecadacao = codigo_arrecadacao;

   select arrecadacao.tabela_relacionada
        , arrecadacao.cod_tabela_relacionada
        , arrecadacao.data_emissao
        , arrecadacao.data_vencimento
        , arrecadacao.competencia
        , arrecadacao.complementar
        , arrecadacao.seu_numero
        , arrecadacao.nosso_numero
        , arrecadacao.valor_a_pagar
        , arrecadacao.valor_multa
        , arrecadacao.valor_juros
        , arrecadacao.valor_desconto
        , coalesce( arrecadacao.obs_outras , '')
        , arrecadacao.cod_tipo_cobranca
        , arrecadacao.cod_convenio_cobranca
        , PADRAO_BANCARIO.DESCRICAO
   
   from arrecadacao
      INNER JOIN PADRAO_BANCARIO ON PADRAO_BANCARIO.COD_PADRAO_BANCARIO = ARRECADACAO.COD_PADRAO_BANCARIO
   where arrecadacao.cod_arrecadacao = :codigo_arrecadacao
   into  :tabela_relacionada, :cod_tabela_relacionada , :data_emissao, :data_vencimento, :competencia, :complementar
       , :seu_numero, :nosso_numero, :valor_do_documento, :multa, :juros, :desconto, :obs
       , :cod_tipo_cobranca, :cod_convenio_cobranca, :PADRAO_BANCARIO ;

   select CONVENIO_COBRANCA.COD_BANCO
   from CONVENIO_COBRANCA
   where CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = :COD_CONVENIO_COBRANCA
   into :COD_BANCO;

   select COALESCE(TIPO_COBRANCA.OBSERVACAO_BOLETO , '' )
       , TIPO_COBRANCA.MULTA_JUROS_AUTOMATICO
       , TIPO_COBRANCA.DIAS_CALCULO_JUROS

   from TIPO_COBRANCA
   where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
   into :OBS_FIXA_TIPO_COBRANCA, :MULTA_JUROS_AUTOMATICO, :DIAS_CALCULO_JUROS;

   exercicio = :competencia;

   obs = OBS_FIXA_TIPO_COBRANCA || '
 ' || OBS;

   if (:competencia <> '')  then
   begin
      if ((:COMPLEMENTAR <> '') and (:COMPLEMENTAR <> '0')) then
         exercicio = :complementar || '/'|| :competencia;
   end

   VALOR_A_PAGAR = ( coalesce(:valor_do_documento , 0 ) +
                     coalesce(:juros , 0 ) +
                     coalesce(:multa , 0 )
                    ) - coalesce(:desconto , 0 ) ;

   /*=================== verifica se a arrecadacao possui algum acordo de pgto ==============*/

   select max(ARRECADACAO_acordo.COD_ARRECADACAO_ACORDO)
   from ARRECADACAO_ACORDO
   where ARRECADACAO_ACORDO.COD_ARRECADACAO = :CODIGO_ARRECADACAO
   into :COD_ARRECADACAO_ACORDO;

   /*================== se a tabela relacionada for associado ==============*/
   DADOS_EMPRESA = '';
   if (:tabela_relacionada = 'ASSOCIADO') then
   begin

      select associado.CODIGO
           , associado.cpf
           , associado.nome
           , associado.endereco_logradouro
           , associado.endereco_numero
           , associado.endereco_complemento
           , associado.bairro
           , associado.cep
           , associado.cidade
           , associado.uf
           , associado.telefone1

          ,  'Empresa: ' || Coalesce(EMPRESA.RAZAOSOCIAL          , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_LOGRADOURO  , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_NUMERO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_COMPLEMENTO , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_BAIRRO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_CIDADE      , '')
       from associado
          left join empresa on empresa.cnpj = ASSOCIADO.EMPRESA
       where associado.codigo = :cod_tabela_relacionada
       into :SACADO_CODIGO, :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone, :DADOS_EMPRESA ;
    end 


   /*================== se a tabela relacionada for empresa ==============*/
   if (:tabela_relacionada = 'EMPRESA') then
   begin
      SACADO_CODIGO = '';
      select empresa.cnpj
           , empresa.razaosocial
           , empresa.endereco_logradouro
           , empresa.endereco_numero
           , empresa.endereco_complemento
           , empresa.endereco_bairro
           , empresa.endereco_cep
           , empresa.endereco_cidade
           , empresa.endereco_uf
           , empresa.telefone1
           , empresa.cnae
           , coalesce(CONTABILIDADE.RAZAOSOCIAL , '')

       from empresa
          left join CONTABILIDADE on CONTABILIDADE.CNPJ = EMPRESA.CONTADOR
       where empresa.cnpj = :cod_tabela_relacionada
       into :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone, :cod_cnae, :SACADO_CONTABILIDADE;
    end 

   if (:tabela_relacionada = 'COMERCIARIO') then
   begin

      select COMERCIARIO.CODIGO
           , COMERCIARIO.CPF
           , COMERCIARIO.NOME
           , COMERCIARIO.ENDERECO_LOGRADOURO
           , COMERCIARIO.ENDERECO_NUMERO
           , COMERCIARIO.ENDERECO_COMPLEMENTO
           , COMERCIARIO.BAIRRO
           , COMERCIARIO.CEP
           , COMERCIARIO.CIDADE
           , COMERCIARIO.UF
           , COMERCIARIO.TELEFONE1
       from COMERCIARIO
       where COMERCIARIO.CODIGO = :cod_tabela_relacionada
       into :SACADO_CODIGO, :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone;
    end 

   if (:tabela_relacionada = 'ENTIDADE_SINDICAL') then
   begin
      SACADO_CODIGO = '';
      select ENTIDADE_SINDICAL.CNPJ
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , ENTIDADE_SINDICAL.ENDERECO_LOGRADOURO
           , ENTIDADE_SINDICAL.ENDERECO_NUMERO
           , ENTIDADE_SINDICAL.ENDERECO_COMPLEMENTO
           , ENTIDADE_SINDICAL.ENDERECO_BAIRRO
           , ENTIDADE_SINDICAL.ENDERECO_CEP
           , ENTIDADE_SINDICAL.ENDERECO_CIDADE
           , ENTIDADE_SINDICAL.ENDERECO_UF
           , ENTIDADE_SINDICAL.TELEFONE1
       from ENTIDADE_SINDICAL
       where ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL = :cod_tabela_relacionada
       into :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone;
    end 

   if (:tabela_relacionada = 'LANCAMENTOS_SERVICOS') then
   begin

      select associado.CODIGO
           , associado.cpf
           , associado.nome
           , associado.endereco_logradouro
           , associado.endereco_numero
           , associado.endereco_complemento
           , associado.bairro
           , associado.cep
           , associado.cidade
           , associado.uf
           , associado.telefone1

          ,  'Empresa: ' || Coalesce(EMPRESA.RAZAOSOCIAL          , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_LOGRADOURO  , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_NUMERO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_COMPLEMENTO , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_BAIRRO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_CIDADE      , '')
       from LANCAMENTOS_SERVICOS
          inner join associado on associado.CODIGO = LANCAMENTOS_SERVICOS.COD_ASSOCIADO
          left join empresa on empresa.cnpj = ASSOCIADO.EMPRESA
       where LANCAMENTOS_SERVICOS.CODIGO = :cod_tabela_relacionada
       into :SACADO_CODIGO, :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone, :DADOS_EMPRESA ;
    end 

   if (:tabela_relacionada = 'LANCAMENTOS_SERVICOS_GENERICO') then
   begin

      select COMERCIARIO.CODIGO
           , COMERCIARIO.cpf
           , COMERCIARIO.nome
           , COMERCIARIO.endereco_logradouro
           , COMERCIARIO.endereco_numero
           , COMERCIARIO.endereco_complemento
           , COMERCIARIO.bairro
           , COMERCIARIO.cep
           , COMERCIARIO.cidade
           , COMERCIARIO.UF
           , COMERCIARIO.TELEFONE1

          ,  'Empresa: ' || Coalesce(EMPRESA.RAZAOSOCIAL          , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_LOGRADOURO  , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_NUMERO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_COMPLEMENTO , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_BAIRRO      , '') ||', '||
             Coalesce(EMPRESA.ENDERECO_CIDADE      , '')
       from LANCAMENTOS_SERVICOS_GENERICO
          inner join COMERCIARIO on COMERCIARIO.CODIGO = LANCAMENTOS_SERVICOS_GENERICO.COD_COMERCIARIO
          left  join empresa    on empresa.cnpj        = COMERCIARIO.EMPRESA

       where LANCAMENTOS_SERVICOS_GENERICO.CODIGO = :cod_tabela_relacionada
       into :SACADO_CODIGO, :sacado_cpf_cnpj, :sacado_nome, :sacado_endereco, :sacado_numero, :sacado_complemento
          , :sacado_bairro, :sacado_cep, :sacado_cidade, :sacado_uf, :sacado_telefone, :DADOS_EMPRESA ;
    end 

  if (:TABELA_RELACIONADA <> '') then
     suspend;
end^


ALTER PROCEDURE PROC_DEMOSTRATIVO_PLANO_CONTA (
    SQL_WHERE VARCHAR(5000))
RETURNS (
    VALOR_PAGAMENTO NUMERIC(15,2),
    CODIGO_DESCRITIVO VARCHAR(80),
    DESCRICAO_PLANO_CONTA VARCHAR(80),
    COD_PLANO_CONTA INTEGER,
    ENTRADA_SAIDA_PLANO_CONTA CHAR(1))
AS
declare variable FILTRO varchar(80);
declare variable SQL varchar(5000);
begin
  /* ==========================================
    Esta procedure faz a soma das movimentações do caixa
    agrupando pelo plano de contas. EX
      Receitas -------> 100,00
         |--- Mensalidades ----> 50,00
         |--- Convites --------> 40,00
         |--- Outras Reeceitas-> 10,00
      Despesas -------> 60,00
         |--- Escritorio -----> 40,00
         |--- Limpeza --------> 20,00
  =============================================*/

   for
      select PLANO_CONTA.COD_PLANO_CONTA
           , PLANO_CONTA.DESCRICAO
           , PLANO_CONTA.CODIGO_DESCRITIVO
           , PLANO_CONTA.ENTRADA_SAIDA
      from PLANO_CONTA
      order by PLANO_CONTA.CODIGO_DESCRITIVO
   into :COD_PLANO_CONTA, :DESCRICAO_PLANO_CONTA, :CODIGO_DESCRITIVO, :ENTRADA_SAIDA_PLANO_CONTA do
   begin
      VALOR_PAGAMENTO = 0;
      FILTRO = CODIGO_DESCRITIVO ||'%';
      FILTRO = ''''|| filtro ||'''';

      if (SQL_WHERE is null) then
        SQL_WHERE = '';

      sql =   ' select COALESCE( sum(MOVIMENTO_CAIXA.VALOR_MOVIMENTO) , 0) '
            ||' from MOVIMENTO_CAIXA'
            ||'   inner join PLANO_CONTA on PLANO_CONTA.COD_PLANO_CONTA = MOVIMENTO_CAIXA.COD_PLANO_CONTA'
            ||' where PLANO_CONTA.CODIGO_DESCRITIVO like ' ||:FILTRO
            ||SQL_WHERE;

       for EXECUTE STATEMENT :SQL
       into :VALOR_PAGAMENTO do
       begin
         SUSPEND;
       end
   end

end^


ALTER PROCEDURE PROC_DETALHE_COBRANCA (
    COD_COBRANCA NUMERIC(15,0))
RETURNS (
    TIPO_GUIA VARCHAR(200),
    VALOR NUMERIC(15,2),
    DATA_VENC DATE,
    DATA_EMISSAO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COD_GUIA NUMERIC(15,0),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    DESCONTO NUMERIC(15,2),
    ACRESCIMO NUMERIC(15,2))
AS
begin

end^


ALTER PROCEDURE PROC_ENQUADRAMENTO_ENTIDADE (
    CNAE_INPUT VARCHAR(18),
    MUNICIPIO_INPUT INTEGER)
RETURNS (
    ENTIDADE_CODIGO INTEGER,
    ENTIDADE_NOME VARCHAR(200),
    ENTIDADE_NOME_FANTASIA VARCHAR(80),
    ENTIDADE_CIDADE VARCHAR(80),
    ENTIDADE_TELEFONE VARCHAR(10),
    CNAE_CODIGO VARCHAR(18),
    CNAE_ATIVIDADE VARCHAR(5000),
    BASE_DESCRICAO VARCHAR(200),
    BASE_CIDADE VARCHAR(200),
    BASE_CIDADE_IBGE INTEGER)
AS
declare variable SQL varchar(5000);
declare variable EXISTE_EXCLUSAO_CIDADE varchar(1);
begin
   /*--------------------------------------------------------------------------
     retorna as entidade que fazem parte do municipio informado ou do codigo cnae
     pode ser passado um dos dois paramentros
     Existe a tabela de exclusão das cidades ou estados.
        EX todo o estado de MG  menos o municipio Belo Horizonte (3106200)

     OBRIGATORIAMENTE deve haver um registro na tabela
     ENTIDADE_SINDICAL_BASE_EXCLUSAO para cara registro na tabela ENTIDADE_SINDICAL_BASE

   ----------------------------------------------------------------------------*/

   sql = 'SELECT  distinct(ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL)
                , ENTIDADE_SINDICAL.RAZAOSOCIAL
                , ENTIDADE_SINDICAL.NOMEFANTASIA
                , ENTIDADE_SINDICAL.ENDERECO_CIDADE
                , ENTIDADE_SINDICAL_BASE_CIDADES.DESCRICAO
                , ENTIDADE_SINDICAL_BASE_CIDADES.COD_MUNICIPIO_IBGE
          from ENTIDADE_SINDICAL
             LEFT JOIN ENTIDADE_SINDICAL_BASE         on ENTIDADE_SINDICAL_BASE.COD_ENTIDADE_SINDICAL              = ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
             LEFT JOIN ENTIDADE_SINDICAL_BASE_SEG     on ENTIDADE_SINDICAL_BASE_SEG.COD_BASE                       = ENTIDADE_SINDICAL_BASE.COD_BASE
             LEFT JOIN ENTIDADE_SINDICAL_SEGMENTO     on ENTIDADE_SINDICAL_SEGMENTO.COD_SEGMENTO                   = ENTIDADE_SINDICAL_BASE_SEG.COD_SEGMENTO
             LEFT JOIN ENTIDADE_SINDICAL_BASE_CIDADES on ENTIDADE_SINDICAL_BASE_CIDADES.COD_ENTIDADE_SIND_BASE_SEG = ENTIDADE_SINDICAL_BASE_SEG.COD_ENTIDADE_SIND_BASE_SEG
             LEFT JOIN ENTIDADE_SINDICAL_SEG_CNAE     on ENTIDADE_SINDICAL_SEG_CNAE.COD_SEGMENTO                   = ENTIDADE_SINDICAL_SEGMENTO.COD_SEGMENTO
             LEFT JOIN CNAEF                          on CNAEF.COD_CNAE                                            = ENTIDADE_SINDICAL_SEG_CNAE.COD_CNAE

                 /*=========== não lista se estiver na lista de exclusao de cidades =============*/

          where 0=0

          /*=========== ENTIDADE_SINDICAL_BASE_CIDADES.COD_MUNICIPIO_IBGE   NOT STARTING  ( SELECT coalesce(ENTIDADE_SINDICAL_BASE_EXCLUSAO.COD_MUNICIPIO_IBGE , 0)
                                                                                    from ENTIDADE_SINDICAL_BASE_EXCLUSAO  , rdb$database
                                                                                    where ENTIDADE_SINDICAL_BASE_EXCLUSAO.COD_ENTIDADE_BASE = ENTIDADE_SINDICAL_BASE.COD_BASE
                                                                                   ) =============*/
                                                                                   ';

      /*============= confirmar se vai ter uma tabela de exclusao de cfop se positivo colocar aqui =========*/

     /*====================================================================
         qdo passasr o codigo do municipio pode ser o codigo UF ou IBGE cidade
         Se passar o codigo UF = 31 serão listadas os UF 31 e todas as cidades que iniciam com 31
            EX: 31, 3104007 , 3104010...
         SE passsar o codigo da cidade serao listadas tb as que tem somente a UF, que sao o 2 primeiros caracteres da cidade
            EX 3104007 vai listar a cidade 3104007 e UF 31...
     ======================================================================*/
     if (MUNICIPIO_INPUT is not null) then
        sql = sql || '  and ( ENTIDADE_SINDICAL_BASE_CIDADES.COD_MUNICIPIO_IBGE STARTING with ' || :MUNICIPIO_INPUT || ' or
                              ENTIDADE_SINDICAL_BASE_CIDADES.COD_MUNICIPIO_IBGE = substring( ' || :MUNICIPIO_INPUT ||' from 1 for 2  )
                             )';


     if (CNAE_INPUT is not null) then

        sql = sql || '  and ENTIDADE_SINDICAL_SEG_CNAE.COD_CNAE = ' || :CNAE_INPUT;

     for
        execute STATEMENT sql
        into
                 :ENTIDADE_CODIGO, :ENTIDADE_NOME, :ENTIDADE_NOME_FANTASIA ,:ENTIDADE_CIDADE
                ,:BASE_CIDADE, :BASE_CIDADE_IBGE do
     begin
        suspend;
     end

end^


ALTER PROCEDURE PROC_FILIACAO_ENTIDADE (
    COD_ENTIDADE INTEGER,
    FILIACAO_AGRUPADA BOOLEAN_STR)
RETURNS (
    CODIGO_SINDICAL VARCHAR(20),
    TIPO VARCHAR(80),
    RAZAO_SOCIAL VARCHAR(200),
    NOME_FANTASIA VARCHAR(200),
    FILIACAO_LINHA_UNICA VARCHAR(200))
AS
declare variable CENTRAL_SINDICAL varchar(20);
declare variable CONFEDERACAO varchar(20);
declare variable FEDERACAO varchar(20);
begin
  /* Procedure Text */
   FILIACAO_LINHA_UNICA = '';
  
  /*============= seleciona a Entidade ============ */

     select  ENTIDADE_SINDICAL.filiacao_centrais
           , ENTIDADE_SINDICAL.filiacao_confederacao
           , ENTIDADE_SINDICAL.filiacao_federacao
     from ENTIDADE_SINDICAL
     where ENTIDADE_SINDICAL.cod_entidade_sindical = :COD_ENTIDADE
     into :CENTRAL_SINDICAL, :CONFEDERACAO, :FEDERACAO;



  /*============= seleciona a CENTRAL SINDICAL ============ */

     select ENTIDADE_SINDICAL.codigo_sindical
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , ENTIDADE_SINDICAL.nomefantasia
           , 'CENTRAL SINDICAL'
     from  ENTIDADE_SINDICAL
     where ENTIDADE_SINDICAL.codigo_sindical = :CENTRAL_SINDICAL
     into :CODIGO_SINDICAL , :RAZAO_SOCIAL,:NOME_FANTASIA, :TIPO;

     if (:CENTRAL_SINDICAL <> '') then
       FILIACAO_LINHA_UNICA =  NOME_FANTASIA;

     if ((FILIACAO_AGRUPADA = 'F') or (FILIACAO_AGRUPADA IS null))  then
     begin

       if (:CENTRAL_SINDICAL <> '') then
         suspend;
     end

  /*============= seleciona a CONFEDERAÇÃO============ */

     select ENTIDADE_SINDICAL.codigo_sindical
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , ENTIDADE_SINDICAL.nomefantasia
           , 'CONFEDERAÇÃO'
     from ENTIDADE_SINDICAL
     where ENTIDADE_SINDICAL.codigo_sindical = :CONFEDERACAO
     into :CODIGO_SINDICAL , :RAZAO_SOCIAL,:NOME_FANTASIA, :TIPO;

     if (:CONFEDERACAO <> '') then
       FILIACAO_LINHA_UNICA =  FILIACAO_LINHA_UNICA || ' / ' || NOME_FANTASIA;

     if ((FILIACAO_AGRUPADA = 'F') or (FILIACAO_AGRUPADA IS null))  then
     begin

       if (:CONFEDERACAO <> '') then
         suspend;
     end

  /*============= seleciona a FEDERACAO ============ */

     select ENTIDADE_SINDICAL.codigo_sindical
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , ENTIDADE_SINDICAL.nomefantasia
           , 'FEDERAÇÃO'
     from ENTIDADE_SINDICAL
     where ENTIDADE_SINDICAL.codigo_sindical =  :FEDERACAO
     into :CODIGO_SINDICAL , :RAZAO_SOCIAL,:NOME_FANTASIA, :TIPO;

     if (:FEDERACAO <> '') then
       FILIACAO_LINHA_UNICA =  FILIACAO_LINHA_UNICA || '/ ' || NOME_FANTASIA;

     if ((FILIACAO_AGRUPADA = 'F') or (FILIACAO_AGRUPADA IS null))  then
     begin

       if (:FEDERACAO <> '') then
         suspend;
     end
     else
     begin
       CODIGO_SINDICAL = '';
       RAZAO_SOCIAL    = '';
       NOME_FANTASIA   = '';
       TIPO            = '';
       suspend;
     end


end^


ALTER PROCEDURE PROC_GRAU_FILIACAO_ENTIDADE (
    COD_SINDICAL VARCHAR(80))
RETURNS (
    COD_ENTIDADE_SINDICAL INTEGER,
    TIPO VARCHAR(80),
    RAZAO_SOCIAL VARCHAR(200))
AS
DECLARE VARIABLE FORCA_SINDICAL VARCHAR(30);
DECLARE VARIABLE CNTC VARCHAR(30);
DECLARE VARIABLE FEDERACAO VARCHAR(30);
begin
  /* Procedure Text */

  FORCA_SINDICAL = substring(:COD_SINDICAL from 1 for 3)||'000000000000' ;
  CNTC           = substring(:COD_SINDICAL from 4 for 3)||'000000000';
  FEDERACAO      = substring(:COD_SINDICAL from 7 for 3)||'000000';

  /*============= seleciona a forca sindical ============ */
  FOR
     select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , 'FORÇA SINDICAL'
     from ENTIDADE_SINDICAL
     where :FORCA_SINDICAL = ENTIDADE_SINDICAL.CODIGO_SINDICAL
     into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL, :TIPO DO
  begin
     suspend;
  end


  /*============= seleciona a cntc============ */
   FOR
     select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , 'CNTC'
 
     from ENTIDADE_SINDICAL
    where :CNTC  = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 4 FOR 12)
     into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL, :TIPO do
   begin
     suspend;
   end

  /*============= seleciona a FEDERACAO ============ */
   FOR
     select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , 'FEDERACAO'

     from ENTIDADE_SINDICAL
    where :FEDERACAO  = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 7 FOR 9)
     into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL, :TIPO do
   begin
     suspend;
   end

end^


ALTER PROCEDURE PROC_GRAVA_ERRO_PROCESS_GUIA (
    NOSSO_NUMERO VARCHAR(30),
    VALOR_GUIA NUMERIC(15,2),
    VALOR_PAGO NUMERIC(15,2),
    DATA_PAGAMENTO DATE,
    DATA_LANCAMENTO DATE,
    TIPO VARCHAR(80),
    DATA_VENCIMENTO DATE,
    OBS VARCHAR(5000),
    ARQUIVO VARCHAR(80),
    CONVENIO VARCHAR(80),
    CNPJ VARCHAR(14),
    CODIGO_ERRO INTEGER,
    LINHA VARCHAR(255),
    TARIFA NUMERIC(15,2),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    SEU_NUMERO VARCHAR(30))
AS
begin
  /* ==============================
    Grava o erro do processamnto de arquivos de retorno

  ================================ */
  suspend;
end^


ALTER PROCEDURE PROC_GRAVA_LOG_ERRO (
    COMPONENTE_EM_FOCO VARCHAR(40),
    FORMULARIO VARCHAR(40),
    USUARIO VARCHAR(80),
    COMPUTADOR VARCHAR(40),
    LINHA_DO_ERRO INTEGER,
    MENSAGEM_ERRO VARCHAR(2000),
    STATUS_TABELA_PRINCIPAL VARCHAR(40),
    COD_FILIAL INTEGER)
AS
begin
   insert into LOG_ERROS (
                          COMPONENTE_EM_FOCO,FORMULARIO,USUARIO,DATA,HORA,
                          STATUS_TABELA_PRINCIPAL,COD_FILIAL,LINHA_ERRO,MENSAGEM_ERRO,
                          COMPUTADOR
                         )
    values (
            :COMPONENTE_EM_FOCO,:FORMULARIO,:USUARIO,CURRENT_DATE,CURRENT_TIME,
            :STATUS_TABELA_PRINCIPAL,:COD_FILIAL,:LINHA_DO_ERRO,:
            MENSAGEM_ERRO,:COMPUTADOR
           );
  suspend;
end^


ALTER PROCEDURE PROC_GUIA_ARREC_NAO_GERADA (
    DATA_INICIO DATE,
    DATA_FIM DATE,
    COD_TIPO_COBRANCA INTEGER,
    TABELA VARCHAR(80),
    CODIGO_TABELA VARCHAR(80))
RETURNS (
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    COD_CONVENIO_COBRANCA INTEGER)
AS
declare variable COD_ARRECADACAO integer;
declare variable DIA integer;
declare variable MES integer;
declare variable ENCONTROU_ARRECADACAO varchar(1);
declare variable INICIO_COBRANCA date;
declare variable DATA_BASE date;
declare variable INICIO_ATIVIDADE date;
declare variable VERIFICAR varchar(1);
declare variable PERIODICIDADE varchar(80);
declare variable ANO_INICIO_COBRANCA integer;
declare variable ANO_ATUAL integer;
declare variable DATA_BASE_GUIAS_NAO_GERADAS date;
BEGIN

  /*=====================================
   Encontra as guias de arrecadacao nao geradas
   o tipo de cobranca deve estar marcado VERIFICAR_SE_NAO_GERADA = T
  =======================================*/ 

  COD_TABELA_RELACIONADA = :CODIGO_TABELA;
  TABELA_RELACIONADA     = :TABELA;

  select  coalesce(TIPO_COBRANCA.VERIFICAR_SE_NAO_GERADA , '')
        , coalesce(TIPO_COBRANCA.PERIODICIDADE , '')
        , TIPO_COBRANCA.DESCRICAO
        , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
        , TIPO_COBRANCA.DATA_BASE_GUIAS_NAO_GERADAS
        , TIPO_COBRANCA.INICIO_DE_COBRANCA
  from TIPO_COBRANCA
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :VERIFICAR, :PERIODICIDADE, :DESCRICAO_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA,
       :DATA_BASE_GUIAS_NAO_GERADAS, DATA_BASE;

  if (VERIFICAR <> 'T') then
     exit;

  if (:DATA_BASE is null) then
     DATA_BASE = '01.01.'|| ( extract(year from CURRENT_DATE) - 5) ;


 /*=====================================
   Pega o inicio da cobranca da empresa, entidade ou associado
   A rotina fica em um Loop a partir do inicio da cobranca ate a data atual
   é verificada a periodicidade mensal / anual
 =======================================*/

  if (upper(:TABELA_RELACIONADA) = 'EMPRESA') then
  begin
    select EMPRESA.INICIO_ATIVIDADE
         , EMPRESA.INICIO_COBRANCA
    from empresa
    where empresa.CNPJ = :COD_TABELA_RELACIONADA
    into :INICIO_ATIVIDADE, :INICIO_COBRANCA;
  end

  if (upper(:TABELA_RELACIONADA) = 'ENTIDADE_SINDICAL') then
  begin

    select ENTIDADE_SINDICAL.INICIO_ATIVIDADE
         , ENTIDADE_SINDICAL.INICIO_COBRANCA
    from ENTIDADE_SINDICAL
    where ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL = :COD_TABELA_RELACIONADA
    into :INICIO_ATIVIDADE, :INICIO_COBRANCA;
  end

  if (upper(:TABELA_RELACIONADA) = 'ASSOCIADO') then
  begin

    select ASSOCIADO.DATACADASTRO
         , ASSOCIADO.INICIO_COBRANCA
    from ASSOCIADO
    where ASSOCIADO.CODIGO = :COD_TABELA_RELACIONADA
    into :INICIO_ATIVIDADE, :INICIO_COBRANCA;

  end


  /*=============================================
    Pega a maoir data entre INICIO_COBRANCA, INICIO_ATIVIDADE , DATA_BASE
    A maior vai ser a base para o inicio de cobranca
  ==============================================*/
  select PROC_MAIOR_DATA.DATA_MAIOR
  from PROC_MAIOR_DATA(:INICIO_ATIVIDADE,:INICIO_COBRANCA,:DATA_BASE)
  into :INICIO_COBRANCA;

  /*======== se for informada a data de inicio da cobranca =============== */
  if (:DATA_INICIO is not null ) then
     INICIO_COBRANCA = :DATA_INICIO;

  if (INICIO_COBRANCA IS NULL ) then
     EXIT;


   ANO_INICIO_COBRANCA = extract(year from INICIO_COBRANCA);

   if (:DATA_FIM is null) then
      DATA_FIM = CURRENT_DATE;

   ANO_ATUAL = extract(year from DATA_FIM);

   /*============== So é vericado os ultimos 5 anos das guias nao geradas =============*/
   if ( (ANO_ATUAL - ANO_INICIO_COBRANCA) > 5 ) then
   begin
     INICIO_COBRANCA = '01.01.'|| (ANO_ATUAL -5) ;
   end

    /*============ Loop para verificar se Existe a compentencia do inicio da cobranca ========= */
   while (:INICIO_COBRANCA <=  :DATA_FIM) do
   begin
      ENCONTROU_ARRECADACAO = 'F' ;

      GUIA_COMPETENCIA = EXTRACT(YEAR FROM :INICIO_COBRANCA);
      GUIA_COMPLEMENTAR = EXTRACT(MONTH FROM :INICIO_COBRANCA);
   
      /*=====================================
         Se a cobranca for do tipo anual verifica somente a guia principal
         ou seja com complementar is NULL... as complementares nao sao verificadas

      =======================================*/
      if (UPPER( :PERIODICIDADE) = 'ANUAL') then
      begin
         select first 1 'T'
         from ARRECADACAO
         where ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
           and ARRECADACAO.TABELA_RELACIONADA    = :TABELA_RELACIONADA
           and ARRECADACAO.COMPETENCIA           = :GUIA_COMPETENCIA
           and ARRECADACAO.COMPLEMENTAR is null
           and ARRECADACAO.COD_TIPO_COBRANCA     = :COD_TIPO_COBRANCA
           and(arrecadacao.EXCLUIDA is null or ARRECADACAO.EXCLUIDA = 'F')

         INTO :ENCONTROU_ARRECADACAO;
      end


      /*==========================================
        se a guia nao for cobrada anualmente deve-se verificar
        as competencias
      ===========================================*/
      if (UPPER( :PERIODICIDADE) <> 'ANUAL') then
      begin
         select first 1 'T'
         from ARRECADACAO
         where ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
           and ARRECADACAO.TABELA_RELACIONADA    = :TABELA_RELACIONADA
           and ARRECADACAO.COMPETENCIA           = :GUIA_COMPETENCIA
           and ARRECADACAO.COMPLEMENTAR          = :GUIA_COMPLEMENTAR
           and ARRECADACAO.COD_TIPO_COBRANCA     = :COD_TIPO_COBRANCA
           and(arrecadacao.EXCLUIDA is null or ARRECADACAO.EXCLUIDA = 'F')
         INTO :ENCONTROU_ARRECADACAO;
      end

      /*============ monta a data de vencimento da guia para sair no relatorio ==============*/

       /*===========================================
         no tipo de cobranca pode ser configurado a data de vencimento da guia
         se nao for informada o sitema coloca o vencimento para o dia 10
       ============================================*/
      if (:DATA_BASE_GUIAS_NAO_GERADAS is null ) then
      begin
         dia        = 10;
         mes        = :GUIA_COMPLEMENTAR;
         GUIA_DATA_VENCIMENTO = dia||'.'||:mes||'.'|| :GUIA_COMPETENCIA;
      end
   
      if (:DATA_BASE_GUIAS_NAO_GERADAS is not null ) then
      begin
         dia = EXTRACT(day from :DATA_BASE_GUIAS_NAO_GERADAS);

          /*======= se a guia for anual pega o mes de vencimento no cadastro do tipo de cobranca ==========*/
         if (UPPER( :PERIODICIDADE) = 'ANUAL') then
            mes = EXTRACT(month from :DATA_BASE_GUIAS_NAO_GERADAS);
         else
            mes = :GUIA_COMPLEMENTAR;

         GUIA_DATA_VENCIMENTO = dia||'.'||:mes||'.'|| :GUIA_COMPETENCIA;
      end

       /*===== so envia o resultado se nao for encontrada na tabela  =======*/
      if (:ENCONTROU_ARRECADACAO = 'F') then
      BEGIN
         if (GUIA_DATA_VENCIMENTO < CURRENT_DATE) then
         BEGIN
            COMENTARIO_SITUACAO = 'Sem Informação';
            if (UPPER( :PERIODICIDADE) = 'ANUAL') then
               GUIA_COMPLEMENTAR = NULL;
            SUSPEND;
         END
      END
      /*====================================
          Passa para a proxima Complementar verificando a periodicidade
      =====================================*/

     if (UPPER( :PERIODICIDADE) = 'ANUAL') then
     begin
        INICIO_COBRANCA = ADDMONTH(:INICIO_COBRANCA , 12);

        /*====================================================
          Existia o problema qdo o inicio da cobranca fosse maior q a tada fim
          EX: Inicio    10/11/2016
              Data Fim  09/08/2016
          Não era listada o ano de 2016 pq no loop data de inicio é maior q a data fim.. por isso neste caso
          verificamos o ano. se for o mesmo ano alteramos a data de inicio para passar mais uma vez pelo loop
          e pegar o ano da data fim
        ======================================================*/
        if (:INICIO_COBRANCA > :DATA_FIM) then
        begin
           if ( extract (year from :INICIO_COBRANCA ) = extract (year from :DATA_FIM ) ) then
              INICIO_COBRANCA = :DATA_FIM ;
        end
     end

     if (UPPER( :PERIODICIDADE) <> 'ANUAL') then
        INICIO_COBRANCA = ADDMONTH(:INICIO_COBRANCA , 1);
   end

END^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_COBRANCA (
    INPUT_TABELA_RELACIONADA VARCHAR(80),
    INPUT_COD_RELACIONADA VARCHAR(80),
    DATA_VENCIMENTO_INICIO DATE,
    DATA_VENCIMENTO_FIM DATE)
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_TIPO_COBRANCA INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    COD_LOCAL_EMISSAO INTEGER,
    CODIGO_DE_BARRAS VARCHAR(44),
    COD_TABELA_RELACIONADA VARCHAR(80),
    NAO_GERAR_SE_JA_EXISTIR VARCHAR(1),
    TABELA_RELACIONADA VARCHAR(80),
    LINHA_DIGITAVEL VARCHAR(70),
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200),
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_CEP CHAR(8),
    ENDERECO_COMPLETO VARCHAR(10000),
    TELEFONE_1 VARCHAR(40),
    TELEFONE_2 VARCHAR(40),
    COD_CNAE VARCHAR(30),
    EMAIL VARCHAR(10000),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_ENDERECO_LOGRADOU VARCHAR(80),
    CONTABILIDADE_ENDERECO_NUMERO VARCHAR(80),
    CONTABILIDADE_ENDERECO_COMPLEME VARCHAR(80),
    CONTABILIDADE_ENDERECO_BAIRRO VARCHAR(80),
    CONTABILIDADE_ENDERECO_CIDADE VARCHAR(80),
    CONTABILIDADE_ENDERECO_UF CHAR(2),
    CONTABILIDADE_ENDERECO_CEP CHAR(10),
    CONTABILIDADE_EMAIL VARCHAR(10000),
    CONTABILIDADE_TELEFONE_1 VARCHAR(40),
    CONTABILIDADE_TELEFONE_2 VARCHAR(40),
    PERIODICIDADE_TIPO_COBRANCA VARCHAR(80),
    COD_COBRANCA_DETALHE NUMERIC(15,0),
    NUMERO_EMPREGADOS INTEGER,
    ULTIMA_COMPETENCIA_PAGA INTEGER,
    ULTIMA_COMPETENCIA_PAGA_VALOR NUMERIC(15,2))
AS
declare variable SQL varchar(9000);
declare variable DATA_INICIO_ATIVIDADE date;
declare variable PADRAO_BANCARIO varchar(80);
declare variable DATA_VENC_A_ANALIZAR date;
declare variable DATA_INICIO_TIPO_COBRANCA date;
declare variable DATA_FIM_TIPO_COBRANCA date;
declare variable COMPETENCIA_CALCULO_VALOR integer;
declare variable VALOR_CALCULO_FUNCIONARIO numeric(15,2);
begin
      /*========================================
         Percorre a tabela de arrecadacao bucando as guias nao pagas de tudo mundo
         para restringir o universo de busca passe o nome da tabela e o codigo chave
         dessa forma a busca vai olhar somente para um codigo chave
         mais rapido no caso de verificar as cobrancas em atrado de uma empresa
      ==========================================*/

     /*==========================================
        se nao for informada a data de vencimento inicial
        olha somente as guias com vencimento de 5 anos atras
      ===========================================*/
     if (DATA_VENCIMENTO_INICIO is null) then
     begin
       DATA_VENCIMENTO_INICIO = '01.01.'|| ( extract(year from CURRENT_DATE) - 5) ;
       DATA_VENCIMENTO_FIM    = CURRENT_DATE;
     end

     if (:INPUT_COD_RELACIONADA is null) then
        INPUT_COD_RELACIONADA = '';

     if (:INPUT_TABELA_RELACIONADA is null) then
        INPUT_TABELA_RELACIONADA = '';

    sql = '';
    sql = sql || ' select ARRECADACAO.COD_ARRECADACAO ';

    sql = sql || '          , ARRECADACAO.COD_TIPO_COBRANCA';
    sql = sql || '          , ARRECADACAO.COD_CONVENIO_COBRANCA';
    sql = sql || '          , ARRECADACAO.COD_LOCAL_EMISSAO';
    sql = sql || '          , ARRECADACAO.CODIGO_DE_BARRAS';
    sql = sql || '          , ARRECADACAO.TABELA_RELACIONADA';
    sql = sql || '          , ARRECADACAO.COD_TABELA_RELACIONADA';
    sql = sql || '          , ARRECADACAO.LINHA_DIGITAVEL';
    sql = sql || '          , ARRECADACAO.SEU_NUMERO';
    sql = sql || '          , ARRECADACAO.NOSSO_NUMERO';
    sql = sql || '          , ARRECADACAO.DATA_EMISSAO';
    sql = sql || '          , ARRECADACAO.DATA_VENCIMENTO';
    sql = sql || '          , ARRECADACAO.VALOR_A_PAGAR';
    sql = sql || '          , ARRECADACAO.COMPETENCIA';
    sql = sql || '          , ARRECADACAO.COMPLEMENTAR';
    sql = sql || '          , ARRECADACAO.COD_COBRANCA_DETALHE';

    sql = sql || '          , TIPO_COBRANCA.DESCRICAO';
    sql = sql || '          , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO';
    sql = sql || '          , TIPO_COBRANCA.NAO_GERAR_SE_JA_EXISTIR';
    sql = sql || '          , TIPO_COBRANCA.PERIODICIDADE';
    sql = sql || '          , TIPO_COBRANCA.FIM_DE_COBRANCA' ;
    sql = sql || '      from ARRECADACAO';
    sql = sql || '         inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA';
    sql = sql || '         inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA';

    sql = sql || '      where  ARRECADACAO.TABELA_RELACIONADA is not NULL';
    sql = sql || '         and ARRECADACAO.DATA_VENCIMENTO BETWEEN ''' || :DATA_VENCIMENTO_INICIO || ''' and ''' || :DATA_VENCIMENTO_FIM ||'''';
    sql = sql || '         and ARRECADACAO.DATA_PAGAMENTO is null';
    sql = sql || '         and ( ARRECADACAO.EXCLUIDA = ''F'' or ARRECADACAO.EXCLUIDA is null)';

     /* ============== verifica s foi informada a tabela realciona no INPUT ==============*/
    if (:INPUT_TABELA_RELACIONADA <> '') then
    begin
       sql = sql || '         AND ARRECADACAO.TABELA_RELACIONADA = ''' ||:INPUT_TABELA_RELACIONADA ||'''';
    end
    else
       sql = sql || '         and ARRECADACAO.TABELA_RELACIONADA <> '''' ';


    /*============== verifica se foi informada o codigo chave no INPUT ================*/
    if (:INPUT_COD_RELACIONADA <> '') then
    begin
       sql = sql || '         AND ARRECADACAO.COD_TABELA_RELACIONADA = ''' ||:INPUT_COD_RELACIONADA ||'''' ;
    end
    else
       sql = sql || '         AND ARRECADACAO.COD_TABELA_RELACIONADA <> '''' ';


    for
        EXECUTE STATEMENT : SQL
        into :COD_ARRECADACAO , :COD_TIPO_COBRANCA , :COD_CONVENIO_COBRANCA , :COD_LOCAL_EMISSAO
           , :CODIGO_DE_BARRAS, :TABELA_RELACIONADA, :COD_TABELA_RELACIONADA, :LINHA_DIGITAVEL, :SEU_NUMERO, :NOSSO_NUMERO, :DATA_EMISSAO
           , :DATA_VENCIMENTO, :VALOR_A_PAGAR, :COMPETENCIA, :COMPLEMENTAR, :COD_COBRANCA_DETALHE, :DESCRICAO_TIPO_COBRANCA, :COD_PADRAO_BANCARIO, :NAO_GERAR_SE_JA_EXISTIR, :PERIODICIDADE_TIPO_COBRANCA, :DATA_FIM_TIPO_COBRANCA do

     begin

        /*==================== =====================================
           O tipo de cobranca tem uma data limite para a cobranca.. se o vencimeto da guia for apos a data limite
           despreza o titulo vencido. No caso de nao informar a data limite de cobranca ela sera considerada da data atual
        ============================================================*/
        if (:DATA_FIM_TIPO_COBRANCA is null) then
           DATA_FIM_TIPO_COBRANCA = CURRENT_DATE;

        if (:DATA_VENCIMENTO > :DATA_FIM_TIPO_COBRANCA) then
          CONTINUE;

         /*=================== pega a ultima compentencia e complementar paga*/

         :ULTIMA_COMPETENCIA_PAGA       = NULL;
         :ultima_competencia_paga_valor = NULL;

         select FIRST 1 arrecadacao.competencia
              , arrecadacao.valor_pagamento
         FROM arrecadacao
         WHERE arrecadacao.tabela_relacionada = :TABELA_RELACIONADA
           AND arrecadacao.cod_tabela_relacionada = :cod_tabela_relacionada
           AND arrecadacao.data_pagamento IS NOT NULL
           AND arrecadacao.cod_tipo_cobranca = :cod_tipo_cobranca
        ORDER BY arrecadacao.competencia DESC

        INTO :ULTIMA_COMPETENCIA_PAGA, :ultima_competencia_paga_valor;

        /*=========================================================
           busca dos dados cadastrais da tabela que esta relacinada ao debito
        ===========================================================*/

        CONTABILIDADE_CNPJ               = '';
        CONTABILIDADE_RAZAOSOCIAL        = '';
        CONTABILIDADE_ENDERECO_LOGRADOU  = '';
        CONTABILIDADE_ENDERECO_NUMERO    = '';
        CONTABILIDADE_ENDERECO_COMPLEME  = '';
        CONTABILIDADE_ENDERECO_BAIRRO    = '';
        CONTABILIDADE_ENDERECO_CIDADE    = '';
        CONTABILIDADE_ENDERECO_UF        = '';
        CONTABILIDADE_ENDERECO_CEP       = '';


        if ( UPPER(:TABELA_RELACIONADA) = 'EMPRESA') then
        begin
           select empresa.CNPJ
                , empresa.RAZAOSOCIAL
                , empresa.ENDERECO_CIDADE
                , empresa.ENDERECO_LOGRADOURO
                , empresa.ENDERECO_NUMERO
                , empresa.ENDERECO_COMPLEMENTO
                , empresa.ENDERECO_BAIRRO
                , empresa.ENDERECO_UF
                , empresa.ENDERECO_CEP
                , empresa.EMAIL
                , empresa.CNAE
                , empresa.NUMERO_EMPREGADOS
                , coalesce( empresa.CONTADOR , '')

                , (
                     SELECT FIRST 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                     from TELEFONE
                        inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                     where telefone.TABELA_RELACIONADA = 'EMPRESA'
                     and TELEFONE.COD_TABELA_RELACIONADA = empresa.CNPJ
                     order by TELEFONE.ORDEM
                  )

                , (
                     SELECT FIRST 1 skip 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                     from TELEFONE
                        inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                     where telefone.TABELA_RELACIONADA = 'EMPRESA'
                     and TELEFONE.COD_TABELA_RELACIONADA = empresa.CNPJ
                     order by TELEFONE.ORDEM
                  )

           from empresa
           where empresa.CNPJ = :COD_TABELA_RELACIONADA
           into  :CPF_CNPJ, :NOME_RAZAO_SOCIAL, :ENDERECO_CIDADE, :ENDERECO_LOGRADOURO,: ENDERECO_NUMERO
                ,:ENDERECO_COMPLEMENTO,:ENDERECO_BAIRRO,:ENDERECO_UF,:ENDERECO_CEP, :EMAIL, :COD_CNAE , :NUMERO_EMPREGADOS, :CONTABILIDADE_CNPJ
                ,:TELEFONE_1, :TELEFONE_2;

          ENDERECO_COMPLETO = COALESCE(ENDERECO_LOGRADOURO        , '' ) ||
                      COALESCE( ' , '  || ENDERECO_NUMERO       , '' ) ||
                      COALESCE( ' - '     || ENDERECO_COMPLEMENTO , '' ) ||
                      COALESCE( ' - '      || ENDERECO_BAIRRO     , '' ) ||
                      COALESCE( ' , '      || ENDERECO_CIDADE     , '' ) ||
                      COALESCE( '/'      || ENDERECO_UF         , '' ) ||
                      COALESCE( ' - CEP: ' || ENDERECO_CEP          , '' );
           /*=========================== Seleciona a contabilidade da empresa ======================*/
           if (:CONTABILIDADE_CNPJ <> '') then
           begin
              SELECT  CONTABILIDADE.RAZAOSOCIAL
                    , CONTABILIDADE.ENDERECO_LOGRADOURO
                    , CONTABILIDADE.ENDERECO_NUMERO
                    , CONTABILIDADE.ENDERECO_COMPLEMENTO
                    , CONTABILIDADE.ENDERECO_BAIRRO
                    , CONTABILIDADE.ENDERECO_CIDADE
                    , CONTABILIDADE.ENDERECO_UF
                    , CONTABILIDADE.ENDERECO_CEP
                    , CONTABILIDADE.EMAIL

                    , (
                        SELECT FIRST 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                        from TELEFONE
                           inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                        where telefone.TABELA_RELACIONADA = 'CONTABILIDADE'
                           and TELEFONE.COD_TABELA_RELACIONADA = CONTABILIDADE.CNPJ
                        order by TELEFONE.ORDEM
                       )

                    , (
                        SELECT FIRST 1 skip 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                        from TELEFONE
                           inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                        where telefone.TABELA_RELACIONADA = 'CONTABILIDADE'
                           and TELEFONE.COD_TABELA_RELACIONADA = CONTABILIDADE.CNPJ
                        order by TELEFONE.ORDEM
                       )

              from CONTABILIDADE
              where CONTABILIDADE.CNPJ = :CONTABILIDADE_CNPJ
              into :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_ENDERECO_LOGRADOU, :CONTABILIDADE_ENDERECO_NUMERO,
                   :CONTABILIDADE_ENDERECO_COMPLEME, :CONTABILIDADE_ENDERECO_BAIRRO, :CONTABILIDADE_ENDERECO_CIDADE,
                   :CONTABILIDADE_ENDERECO_UF, :CONTABILIDADE_ENDERECO_CEP, :CONTABILIDADE_EMAIL,
                   :CONTABILIDADE_TELEFONE_1 , :CONTABILIDADE_TELEFONE_2;
           end

           /*=====================================
              verifica se a guia tem valor informado
           =========================================*/
           if ( ( (:VALOR_A_PAGAR is NULL ) or (:VALOR_A_PAGAR = 0 ) ) and :NUMERO_EMPREGADOS > 0 ) then
           begin
              select PROC_CALCULA_VALOR_FUNCIONARIO.VALOR_FINAL
              from   PROC_CALCULA_VALOR_FUNCIONARIO( :COMPETENCIA
                                                   , :NUMERO_EMPREGADOS
                                                   , :COD_TIPO_COBRANCA
                                                   )
              INTO :VALOR_CALCULO_FUNCIONARIO;
   
              if (VALOR_CALCULO_FUNCIONARIO > 0 ) then
                 VALOR_A_PAGAR = VALOR_CALCULO_FUNCIONARIO;
           end

        end

        if ( UPPER(:TABELA_RELACIONADA) = 'ASSOCIADO' ) then
        begin
           select ASSOCIADO.CPF
                , ASSOCIADO.NOME
                , ASSOCIADO.CIDADE
                , ASSOCIADO.ENDERECO_LOGRADOURO
                , ASSOCIADO.ENDERECO_NUMERO
                , ASSOCIADO.ENDERECO_COMPLEMENTO
                , ASSOCIADO.BAIRRO
                , ASSOCIADO.UF
                , ASSOCIADO.CEP

           from ASSOCIADO
           where ASSOCIADO.CODIGO = :COD_TABELA_RELACIONADA
           into :CPF_CNPJ, :NOME_RAZAO_SOCIAL, :ENDERECO_CIDADE, :ENDERECO_LOGRADOURO,: ENDERECO_NUMERO
                ,:ENDERECO_COMPLEMENTO,:ENDERECO_BAIRRO,:ENDERECO_UF,:ENDERECO_CEP;
        end

        if ( UPPER(:TABELA_RELACIONADA) = 'ENTIDADE_SINDICAL' ) then
        begin
           select ENTIDADE_SINDICAL.CNPJ
                , ENTIDADE_SINDICAL.RAZAOSOCIAL
                , ENTIDADE_SINDICAL.ENDERECO_CIDADE
                , ENTIDADE_SINDICAL.ENDERECO_LOGRADOURO
                , ENTIDADE_SINDICAL.ENDERECO_NUMERO
                , ENTIDADE_SINDICAL.ENDERECO_COMPLEMENTO
                , ENTIDADE_SINDICAL.ENDERECO_BAIRRO
                , ENTIDADE_SINDICAL.ENDERECO_UF
                , ENTIDADE_SINDICAL.ENDERECO_CEP
           from ENTIDADE_SINDICAL
           where ENTIDADE_SINDICAL.CODIGO_SINDICAL = :COD_TABELA_RELACIONADA
           into :CPF_CNPJ, :NOME_RAZAO_SOCIAL, :ENDERECO_CIDADE, :ENDERECO_LOGRADOURO,: ENDERECO_NUMERO
                ,:ENDERECO_COMPLEMENTO,:ENDERECO_BAIRRO,:ENDERECO_UF,:ENDERECO_CEP;
        end

        if ( UPPER(:TABELA_RELACIONADA) = 'COMERCIARIO' ) then
        begin
           select COMERCIARIO.CPF
                , COMERCIARIO.NOME
                , COMERCIARIO.CIDADE
                , COMERCIARIO.ENDERECO_LOGRADOURO
                , COMERCIARIO.ENDERECO_NUMERO
                , COMERCIARIO.ENDERECO_COMPLEMENTO
                , COMERCIARIO.BAIRRO
                , COMERCIARIO.UF
                , COMERCIARIO.CEP
           from COMERCIARIO
           where COMERCIARIO.CODIGO = :COD_TABELA_RELACIONADA
           into :CPF_CNPJ, :NOME_RAZAO_SOCIAL, :ENDERECO_CIDADE, :ENDERECO_LOGRADOURO,: ENDERECO_NUMERO
                ,:ENDERECO_COMPLEMENTO,:ENDERECO_BAIRRO,:ENDERECO_UF,:ENDERECO_CEP;
        end

        SUSPEND;
     end


     COD_ARRECADACAO         = null;
     COD_TIPO_COBRANCA       = null;
     COD_CONVENIO_COBRANCA   = null;
     COD_LOCAL_EMISSAO       = null;

     CODIGO_DE_BARRAS       = null;
     TABELA_RELACIONADA     = null;
     COD_TABELA_RELACIONADA = null;
     LINHA_DIGITAVEL        = null;
     SEU_NUMERO             = null;
     NOSSO_NUMERO           = null;
     DATA_EMISSAO           = null;
     DATA_VENCIMENTO        = null;
     VALOR_A_PAGAR          = null;
     COMPETENCIA            = null;
     COMPLEMENTAR           = null;
     COD_COBRANCA_DETALHE   = null;


     /*=============================================================
           ESTA PARTE FUNCIONA SO PARA EMPRESAS - REESCREVER PARA FUNCIONAR COM OUTRAS TABELAS

           Realiza a verificacao das guias nao existente no sistema
           O loop percorre todos os tipos de cobranca, verifica se esta faltando algum lancamento
           do tipo de cobranca. EX no caso da guia sindical deve existir pelo menos uma guia por ano
           se estiver faltando algum ano sera mostrado "Sem Informa??o"
      ==============================================================*/
     if ( (INPUT_TABELA_RELACIONADA = '') or (:INPUT_TABELA_RELACIONADA = 'EMPRESA') )  then
     for
       select TIPO_COBRANCA.COD_TIPO_COBRANCA
            , TIPO_COBRANCA.DESCRICAO
            , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
            , PADRAO_BANCARIO.COD_PADRAO_BANCARIO
            , TIPO_COBRANCA.NAO_GERAR_SE_JA_EXISTIR
            , PADRAO_BANCARIO.DESCRICAO
            , TIPO_COBRANCA.PERIODICIDADE
            , TIPO_COBRANCA.INICIO_DE_COBRANCA
            , TIPO_COBRANCA.FIM_DE_COBRANCA

       from TIPO_COBRANCA
          inner join TIPO_COBRANCA_ONDE_USAR on TIPO_COBRANCA_ONDE_USAR.COD_TIPO_COBRANCA = TIPO_COBRANCA.COD_TIPO_COBRANCA
          inner join CONVENIO_COBRANCA on  CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
          inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO

       where TIPO_COBRANCA.VERIFICAR_SE_NAO_GERADA = 'T'
         and TIPO_COBRANCA_ONDE_USAR.ONDE_SERA_USADO = 'Empresas'


       into :COD_TIPO_COBRANCA, DESCRICAO_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :COD_PADRAO_BANCARIO
          , :NAO_GERAR_SE_JA_EXISTIR, :PADRAO_BANCARIO, :PERIODICIDADE_TIPO_COBRANCA, :DATA_INICIO_TIPO_COBRANCA
          , :DATA_FIM_TIPO_COBRANCA do
      begin

        /*==================== =====================================
           O tipo de cobranca tem uma data limite para a cobranca.. se o vencimeto da guia for apos a data limite
           despreza o titulo vencido. No caso de nao informar a data limite de cobranca ela sera considerada da data atual
        ============================================================*/
        if (:DATA_FIM_TIPO_COBRANCA is null) then
           DATA_FIM_TIPO_COBRANCA = CURRENT_DATE;


        NUMERO_EMPREGADOS      = null;
          /*================ se o codigo chave da tabela for passado no INPUt soo olha pra ela =======*/

         sql = '';
         sql = sql || ' select EMPRESA.CNPJ ';
         sql = sql || '         , EMPRESA.RAZAOSOCIAL ';
         sql = sql || '         , EMPRESA.INICIO_ATIVIDADE';
         sql = sql || '         , EMPRESA.CONTADOR';
         sql = sql || '         , empresa.ENDERECO_CIDADE';
         sql = sql || '         , empresa.ENDERECO_LOGRADOURO';
         sql = sql || '         , empresa.ENDERECO_NUMERO';
         sql = sql || '         , empresa.ENDERECO_COMPLEMENTO';
         sql = sql || '         , empresa.ENDERECO_BAIRRO';
         sql = sql || '         , empresa.ENDERECO_UF';
         sql = sql || '         , empresa.ENDERECO_CEP';
         sql = sql || '         , empresa.EMAIL';
         sql = sql || '         , empresa.NUMERO_EMPREGADOS';



         sql = sql || ' from empresa ';
         sql = sql || '       inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS ';
         sql = sql || ' where EMPRESA_STATUS.GERA_GUIAS = ''T''';

          /*============ verifica se foi passao o codigo chave no INPUT =============== */
         if (:INPUT_COD_RELACIONADA <> '') then
            sql = sql || ' and EMPRESA.CNPJ = ''' ||:INPUT_COD_RELACIONADA ||'''' ;

         for
            execute STATEMENT :sql
            into :COD_TABELA_RELACIONADA, :NOME_RAZAO_SOCIAL, :DATA_INICIO_ATIVIDADE, :CONTABILIDADE_CNPJ
               , :ENDERECO_CIDADE, :ENDERECO_LOGRADOURO,: ENDERECO_NUMERO
                ,:ENDERECO_COMPLEMENTO,:ENDERECO_BAIRRO,:ENDERECO_UF,:ENDERECO_CEP, :EMAIL, :NUMERO_EMPREGADOS do
         begin
            ENDERECO_COMPLETO = COALESCE(ENDERECO_LOGRADOURO                , '' ) ||
                                COALESCE( ', N?: '  || ENDERECO_NUMERO      , '' ) ||
                                COALESCE( ' - '     || ENDERECO_COMPLEMENTO , '' ) ||
                                COALESCE( ', '      || ENDERECO_BAIRRO      , '' ) ||
                                COALESCE( ', '      || ENDERECO_CIDADE      , '' ) ||
                                COALESCE( ', Cep: ' || ENDERECO_CEP         , '' );

             TABELA_RELACIONADA = 'EMPRESA' ;
             CPF_CNPJ           = COD_TABELA_RELACIONADA;

           /*=========================== Seleciona a contabilidade da empresa ======================*/
             SELECT  CONTABILIDADE.RAZAOSOCIAL
                   , CONTABILIDADE.ENDERECO_LOGRADOURO
                   , CONTABILIDADE.ENDERECO_NUMERO
                   , CONTABILIDADE.ENDERECO_COMPLEMENTO
                   , CONTABILIDADE.ENDERECO_BAIRRO
                   , CONTABILIDADE.ENDERECO_CIDADE
                   , CONTABILIDADE.ENDERECO_UF
                   , CONTABILIDADE.ENDERECO_CEP
                   , CONTABILIDADE.EMAIL
 
                   , (
                       SELECT FIRST 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                       from TELEFONE
                          inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                       where telefone.TABELA_RELACIONADA = 'CONTABILIDADE'
                          and TELEFONE.COD_TABELA_RELACIONADA = CONTABILIDADE.CNPJ
                       order by TELEFONE.ORDEM
                      )
 
                   , (
                       SELECT FIRST 1 skip 1 INSERIR_MASCARA( TIPO_TELEFONE.MASCARA, TELEFONE.TELEFONE )
                       from TELEFONE
                          inner join TIPO_TELEFONE on TIPO_TELEFONE.COD_TIPO_TELEFONE = TELEFONE.COD_TIPO_TELEFONE
                       where telefone.TABELA_RELACIONADA = 'CONTABILIDADE'
                          and TELEFONE.COD_TABELA_RELACIONADA = CONTABILIDADE.CNPJ
                       order by TELEFONE.ORDEM
                      )
 
             from CONTABILIDADE
             where CONTABILIDADE.CNPJ = :CONTABILIDADE_CNPJ
             into :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_ENDERECO_LOGRADOU, :CONTABILIDADE_ENDERECO_NUMERO,
                  :CONTABILIDADE_ENDERECO_COMPLEME, :CONTABILIDADE_ENDERECO_BAIRRO, :CONTABILIDADE_ENDERECO_CIDADE,
                  :CONTABILIDADE_ENDERECO_UF, :CONTABILIDADE_ENDERECO_CEP, :CONTABILIDADE_EMAIL,
                  :CONTABILIDADE_TELEFONE_1 , :CONTABILIDADE_TELEFONE_2;
 
             /*============================================================================
              se verifca se a data de inicio de cobranca do tipo de cobranca ? maior que a data inicial da verificacao
               isso ? necessario para o caso de 2 tipos de cobran?as analizados..
               EX: A sindical tem inicio de cobranca em  01/01/2013 "A data passada no paramentro"
                   A PAG tem inicio de cobranca em 10/09/2018
               no caso da paga a data de inici da verificacao deve ser ajustada
            ==================================================================================*/
             DATA_VENC_A_ANALIZAR =  :DATA_VENCIMENTO_INICIO;

             if (:DATA_INICIO_TIPO_COBRANCA >= :DATA_VENCIMENTO_INICIO) then
               DATA_VENC_A_ANALIZAR = DATA_INICIO_TIPO_COBRANCA;

             select PROC_MAIOR_DATA.DATA_MAIOR
             from PROC_MAIOR_DATA(:DATA_INICIO_ATIVIDADE , :DATA_VENC_A_ANALIZAR, null)
             into :DATA_VENC_A_ANALIZAR;

             for
                select PROC_GUIA_ARREC_NAO_GERADA.GUIA_DATA_VENCIMENTO
                     , PROC_GUIA_ARREC_NAO_GERADA.GUIA_COMPETENCIA
                     , PROC_GUIA_ARREC_NAO_GERADA.GUIA_COMPLEMENTAR
                     , PROC_GUIA_ARREC_NAO_GERADA.COMENTARIO_SITUACAO
                from PROC_GUIA_ARREC_NAO_GERADA(:DATA_VENC_A_ANALIZAR,:DATA_VENCIMENTO_FIM, :COD_TIPO_COBRANCA, 'EMPRESA', :COD_TABELA_RELACIONADA)
                into  :DATA_VENCIMENTO, :COMPETENCIA, :COMPLEMENTAR, :COMENTARIO_SITUACAO do
             begin
                 /*=======================================================
                   as guias sindicais vencem no mes de Mar?o - 03
                   As empresas que tiverem a data de inicio de cobran?a apos o mes  03
                   nao deve ser cobrado a guia do ano
                 ========================================================*/

                if ( (:DATA_VENCIMENTO >= :DATA_VENCIMENTO_INICIO) and ( :DATA_VENCIMENTO >= :DATA_INICIO_ATIVIDADE) and (:DATA_VENCIMENTO <= :DATA_FIM_TIPO_COBRANCA)) then
                begin

                   /*==================================================
                       Verifica se o valor esta zerado e calcula o valor de acordo com o a tabela de salario
                       e qtd de funcionarios Informado no cadastro da empresa
                   ===================================================*/
                   --if ( ((:VALOR_A_PAGAR is null ) or (:VALOR_A_PAGAR <= 0) ) and (NUMERO_EMPREGADOS  > 0 ))  then
                   if ( NUMERO_EMPREGADOS  > 0 )  then
                   begin
                      VALOR_A_PAGAR = NULL;

                      select PROC_CALCULA_VALOR_FUNCIONARIO.VALOR_FINAL
                      from   PROC_CALCULA_VALOR_FUNCIONARIO( extract(year from :DATA_VENCIMENTO)
                                                           , :NUMERO_EMPREGADOS
                                                           , :COD_TIPO_COBRANCA
                                                           )
                      INTO :VALOR_CALCULO_FUNCIONARIO;

                      if (VALOR_CALCULO_FUNCIONARIO > 0 ) then
                         VALOR_A_PAGAR = VALOR_CALCULO_FUNCIONARIO;
                   end

                     /*=================== pega a ultima compentencia e complementar paga*/
   
                     select FIRST 1 arrecadacao.competencia
                          , arrecadacao.valor_pagamento
                     FROM arrecadacao
                     WHERE arrecadacao.tabela_relacionada = :TABELA_RELACIONADA
                       AND arrecadacao.cod_tabela_relacionada = :cod_tabela_relacionada
                       AND arrecadacao.data_pagamento IS NOT NULL
                       AND arrecadacao.cod_tipo_cobranca = :cod_tipo_cobranca
                     ORDER BY arrecadacao.competencia DESC
                     
                     INTO :ULTIMA_COMPETENCIA_PAGA, :ultima_competencia_paga_valor;

                   SUSPEND;

                   VALOR_A_PAGAR = NULL;
                end

             end
         end
        COMENTARIO_SITUACAO = '';
      end

end^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_DETALHE (
    COD_ARRECADACAO_PRINCIPAL INTEGER,
    COD_ARRECADACAO_VINCULADA INTEGER,
    COD_USUARIO INTEGER,
    DESCRICAO VARCHAR(200),
    DATA_VENC DATE,
    VALOR NUMERIC(15,2),
    OBS_SISTEMA VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000))
RETURNS (
    COD_ARRECADACAO_DETALHE INTEGER)
AS
DECLARE VARIABLE CODIGO INTEGER;
begin

   SELECT COALESCE( MAX(ARRECADACAO_DETALHE.COD_ARRECADACAO_DETALHE) , 0 )
   FROM ARRECADACAO_DETALHE
   INTO :codigo;

   CODIGO = :CODIGO + 1;

  
   INSERT INTO ARRECADACAO_DETALHE (COD_ARRECADACAO_DETALHE, COD_ARRECADACAO, COD_ARRECADACAO_VINCULADO, COD_USUARIO, DESCRICAO, DATA_CAD,
                                    HORA_CAD, VALOR, DATA_VENCIMENTO, OBS_SISTEMA, OBS_OUTRAS)
                                    VALUES (:codigo, :COD_ARRECADACAO_PRINCIPAL, :COD_ARRECADACAO_VINCULADA, :COD_USUARIO,
                                            :DESCRICAO, CURRENT_DATE, CURRENT_TIME, :VALOR, :DATA_VENC,
                                            :OBS_SISTEMA, :OBS_OUTRAS);
  suspend;
end^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_GERAR (
    COD_CONVENIO_COBRANCA INTEGER,
    COD_PADRAO_BANCARIO INTEGER,
    COD_LOCAL_EMISSAO INTEGER,
    COD_USUARIO_EMISSAO INTEGER,
    COD_TIPO_COBRANCA INTEGER,
    COD_TABELA_RELACIONADA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    DATA_EMISSAO DATE,
    DATA_VENCIMENTO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    SEU_NUMERO VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_A_PAGAR NUMERIC(15,2),
    OBS_SISTEMA VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000),
    FLAG CHAR(5),
    BASE_DE_CALCULO NUMERIC(15,2),
    COD_ARRECADACAO_COMP_VALOR NUMERIC(15,0),
    CODIGO_DE_BARRAS VARCHAR(50),
    NAO_GERAR_SE_JA_EXISTIR VARCHAR(1))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    GERA_REMESSA VARCHAR(1))
AS
declare variable GUIA_JA_CADASTRADA varchar(10);
begin
  /* =====================================
    Verifica se a guia ja esta cadastrada no banco de dados
    Mesma combranca com mesma competencia e complementar para a memsa pessoa
    sera ignorada se o flag for true.
    As vezes pode ser necessario mesma competencia e cmplementar por isso existe
    o flag
  =======================================*/
  guia_ja_cadastrada = '';
  COD_ARRECADACAO = 0 ;

   if (:nao_gerar_se_ja_existir = 'T') then
   begin
      select FIRST 1 'SIM'
      from arrecadacao
      where
            arrecadacao.competencia  =     :competencia
        and COALESCE( arrecadacao.complementar , '') =   COALESCE(  :complementar , '')
        and arrecadacao.cod_tipo_cobranca  =     :cod_tipo_cobranca
        and arrecadacao.tabela_relacionada =     :tabela_relacionada
        and arrecadacao.cod_tabela_relacionada = :cod_tabela_relacionada
        and (ARRECADACAO.EXCLUIDA is null or ARRECADACAO.EXCLUIDA = 'F'  )

     into :guia_ja_cadastrada;
    
     if (:guia_ja_cadastrada =  'SIM') then
        EXIT;
   end

   COD_ARRECADACAO = GEN_ID(GEN_ARRECADACAO , 1);

   INSERT INTO ARRECADACAO (
                            COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO,
                            COD_TIPO_COBRANCA, COD_TABELA_RELACIONADA, TABELA_RELACIONADA, DATA_EMISSAO, DATA_VENCIMENTO,
                            COMPETENCIA, COMPLEMENTAR, SEU_NUMERO, NOSSO_NUMERO,
                            VALOR_A_PAGAR, OBSERVACOES_SISTEMA, OBS_OUTRAS, FLAG, VALOR_BASE_DE_CALCULO , COD_ARRECADACAO_COMP_VALOR, CODIGO_DE_BARRAS)
          VALUES(
                  :COD_ARRECADACAO , :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO , :COD_LOCAL_EMISSAO , :COD_USUARIO_EMISSAO
                , :COD_TIPO_COBRANCA, :COD_TABELA_RELACIONADA , :TABELA_RELACIONADA , :DATA_EMISSAO , :DATA_VENCIMENTO
                , :COMPETENCIA , :COMPLEMENTAR , :SEU_NUMERO , :NOSSO_NUMERO
                , :VALOR_A_PAGAR , :OBS_SISTEMA , :OBS_OUTRAS , :FLAG, :BASE_DE_CALCULO, :COD_ARRECADACAO_COMP_VALOR, :CODIGO_DE_BARRAS);


   /*============ retorna se o convenio de cobranca pode gerar remessa ===========*/
   select coalesce (CONVENIO_COBRANCA.GERA_REMESSA , 'F')
   from CONVENIO_COBRANCA
   where CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = :COD_CONVENIO_COBRANCA
   into :GERA_REMESSA;

   suspend;

end^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_INFSACADO (
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80))
RETURNS (
    CODIGO_CHAVE VARCHAR(80),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    CPF_CNPJ VARCHAR(80),
    CNPJ_EMPRESA_ASSOCIADO VARCHAR(14),
    CPF_CNPJ_CONTABILIDADE VARCHAR(14))
AS
begin
  /* =============================
     Retorna as informações basicas do sacado da guia
  =============================== */

  CODIGO_CHAVE = :COD_TABELA_RELACIONADA;
  CNPJ_EMPRESA_ASSOCIADO = '';
  CPF_CNPJ_CONTABILIDADE = '';

  if (:TABELA_RELACIONADA = 'EMPRESA') then
  begin
     SELECT EMPRESA.RAZAOSOCIAL
          , EMPRESA.CNPJ
          , EMPRESA.CONTADOR
     FROM EMPRESA
     WHERE EMPRESA.CNPJ = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ, :CPF_CNPJ_CONTABILIDADE;
  end

  if (:TABELA_RELACIONADA = 'ASSOCIADO') then
  begin
     SELECT ASSOCIADO.NOME
          , ASSOCIADO.CPF
          , ASSOCIADO.EMPRESA
     FROM ASSOCIADO
     WHERE ASSOCIADO.CODIGO = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ , :CNPJ_EMPRESA_ASSOCIADO;
  end
   
  if (:TABELA_RELACIONADA = 'CONTABILIDADE') then
  begin
     SELECT CONTABILIDADE.RAZAOSOCIAL
          , CONTABILIDADE.CNPJ
     FROM CONTABILIDADE
     WHERE CONTABILIDADE.CNPJ = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ;
  end

  if (:TABELA_RELACIONADA = 'ENTIDADE_SINDICAL') then
  begin
     SELECT ENTIDADE_SINDICAL.RAZAOSOCIAL
          , ENTIDADE_SINDICAL.CNPJ
     FROM ENTIDADE_SINDICAL
     WHERE ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ;
  end

  if (:TABELA_RELACIONADA = 'COMERCIARIO') then
  begin
     SELECT COMERCIARIO.NOME
          , COMERCIARIO.CPF
     FROM COMERCIARIO
     WHERE COMERCIARIO.CODIGO = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ;
  end

  if (:TABELA_RELACIONADA = 'LANCAMENTOS_SERVICOS') then
  begin
     SELECT ASSOCIADO.NOME
          , ASSOCIADO.CPF
          , associado.CODIGO
     FROM LANCAMENTOS_SERVICOS
        inner join ASSOCIADO on ASSOCIADO.CODIGO = LANCAMENTOS_SERVICOS.COD_ASSOCIADO
     WHERE LANCAMENTOS_SERVICOS.CODIGO = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ, :CODIGO_CHAVE;
  end

  if (:TABELA_RELACIONADA = 'LANCAMENTOS_SERVICOS_GENERICO') then
  begin
     SELECT comerciario.NOME
          , comerciario.CPF
          , comerciario.CODIGO
     FROM lancamentos_servicos_generico
        inner join comerciario on comerciario.CODIGO = lancamentos_servicos_generico.cod_comerciario
     WHERE lancamentos_servicos_generico.CODIGO = :COD_TABELA_RELACIONADA
     INTO :NOME_RAZAO_SOCIAL , :CPF_CNPJ, :CODIGO_CHAVE;
  end

  suspend;
end^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_LOCALIZAR (
    LINHA_DIGITAVEL VARCHAR(70),
    CODIGO_DE_BARRA VARCHAR(44),
    COD_CHAVE_ARRECADACAO NUMERIC(15,0),
    SEU_NUM VARCHAR(30),
    NOSSO_NUMERO VARCHAR(30),
    CODIGO_CONVENIO_COBRANCA INTEGER,
    VALOR_PAGO NUMERIC(15,2))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_TIPO_COBRANCA INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    QUANTIDADE_GUIAS_ENCONTRADAS INTEGER,
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    DESCRICAO_CONVENIO_COBRANCA VARCHAR(80),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAOSOCIAL VARCHAR(200),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    SEU_NUMERO VARCHAR(30),
    DATA_VENCIMENTO DATE,
    DATA_EMISSAO DATE,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_A_PAGAR NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    COD_BARRA VARCHAR(44),
    CNPJ_EMPRESA_ASSOCIADO VARCHAR(14),
    CPF_CNPJ_CONTABILIDADE VARCHAR(14))
AS
declare variable CODIGO_NO_NOSSO_NUM varchar(10);
declare variable ENCONTRADA varchar(1);
declare variable QUANTIDADE_GUIAS_TMP integer;
begin
  /* =================================
     Localiza a guia de arrecadacao atraves do nosso seu numero ou do numero com convenio de cobranca.
     Retornando os campos basicos quer podem ser usados para fazer joins para consultas expecificas
  ====================================*/
  ENCONTRADA = 'F';
  QUANTIDADE_GUIAS_ENCONTRADAS = 0;

   /*================ 1º Tentativa. Localizar os dados pelo codigo chave da tabela de arrecadacao =======*/
  if (:COD_CHAVE_ARRECADACAO <> 0  ) then
  begin
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
          , ARRECADACAO.VALOR_TARIFA

   
     from ARRECADACAO
     where ARRECADACAO.COD_ARRECADACAO = :COD_CHAVE_ARRECADACAO
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA, :VALOR_TARIFA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END
  end

   /*=============== 2º Tentativa. Localizar guia pelo codigo de barras ================*/
  if ((:CODIGO_DE_BARRA <> '' ) and (:ENCONTRADA = 'F') ) then
  begin
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS

   
     from ARRECADACAO
     where ARRECADACAO.CODIGO_DE_BARRAS = :CODIGO_DE_BARRA
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END
  end


   /*=============== 3º Tentativa. Localizar guia pela linha digitavel ================*/
  if ((:LINHA_DIGITAVEL <> ''  ) and (:ENCONTRADA = 'F')) then
  begin
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
   
     from ARRECADACAO
     where ARRECADACAO.LINHA_DIGITAVEL = :LINHA_DIGITAVEL
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END
  end

   /*=============== 4º Tentativa. Localizar guia pelo seu numero ================*/
  if ((:SEU_NUM <> '') and (:ENCONTRADA = 'F')) then
  begin
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
   
     from ARRECADACAO
     where ARRECADACAO.SEU_NUMERO= :SEU_NUM
       and ARRECADACAO.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END
  END

  /*============== 5º Tentativa. localizar a guia pelo Nosso Numero ===============*/
  if ((:NOSSO_NUMERO <> '') and (:ENCONTRADA = 'F')) then
  begin
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
   
     from ARRECADACAO
     where ARRECADACAO.NOSSO_NUMERO = :NOSSO_NUMERO
        and ARRECADACAO.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END
  end

  /*========================================================================
    algumas guias ficaram com o padrao do nosso numero difernte nao tem o codigo do tipo de recebimento
    apenas o codigo chave da tabela local.. Isso no convenio SIGCB. ele inicia com 14 e no final o cod chave
    da arrecadacao.. entre eles esta zerado
  =========================================================================*/

  if ( (:ENCONTRADA = 'F') AND (SUBSTRING ( :NOSSO_NUMERO from 1 for 2 ) = '14' )  and  (SUBSTRING ( :NOSSO_NUMERO from 9 for 1 ) = '0' ))  then
  BEGIN
     CODIGO_NO_NOSSO_NUM = SUBSTRING ( :NOSSO_NUMERO from 10 for 8);

     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
   
     from ARRECADACAO
     where ARRECADACAO.COD_ARRECADACAO = :CODIGO_NO_NOSSO_NUM
        and ARRECADACAO.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_ENCONTRADAS = :QUANTIDADE_GUIAS_ENCONTRADAS + 1;
     END

  END

  /*================================================
     se for encontrada mais de uma guia na consulta passa o valor pago na condição
     caso o valor pago seja o mesmo valor da guia.
     Nas guias antigas importadas as alguns codigos de barras nao batem
  ===================================================*/

  if (QUANTIDADE_GUIAS_ENCONTRADAS > 1) then
  begin
     QUANTIDADE_GUIAS_TMP = 0;
     ENCONTRADA = 'F';
     FOR
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.COD_TIPO_COBRANCA
          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.TABELA_RELACIONADA
          , ARRECADACAO.COD_TABELA_RELACIONADA
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.CODIGO_DE_BARRAS
   
     from ARRECADACAO
     where ARRECADACAO.SEU_NUMERO = :SEU_NUM
        and ARRECADACAO.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
        and ARRECADACAO.VALOR_A_PAGAR = :VALOR_PAGO
   
     into :COD_ARRECADACAO, :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA, :TABELA_RELACIONADA,
          :COD_TABELA_RELACIONADA, :SEU_NUMERO,:DATA_VENCIMENTO, :DATA_EMISSAO, :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_A_PAGAR,
          :COMPETENCIA, :COMPLEMENTAR, :COD_BARRA DO
     BEGIN
        ENCONTRADA = 'T';
        QUANTIDADE_GUIAS_TMP = :QUANTIDADE_GUIAS_TMP + 1;
     END
  end

  if (QUANTIDADE_GUIAS_TMP = 1) then
     QUANTIDADE_GUIAS_ENCONTRADAS = 1;

   /*=================== se a guia foi encontrada traz as informações do sacado e outras ==============*/
  if (:ENCONTRADA = 'T') then
  begin
      /*============ informacao do sacado de acordo com a a tabela relacionada ===========*/
     SELECT PROC_GUIA_ARRECADACAO_INFSACADO.NOME_RAZAO_SOCIAL
          , PROC_GUIA_ARRECADACAO_INFSACADO.CPF_CNPJ
          , PROC_GUIA_ARRECADACAO_INFSACADO.CNPJ_EMPRESA_ASSOCIADO
          , PROC_GUIA_ARRECADACAO_INFSACADO.CPF_CNPJ_CONTABILIDADE
          , PROC_GUIA_ARRECADACAO_INFSACADO.CODIGO_CHAVE
     from PROC_GUIA_ARRECADACAO_INFSACADO(:TABELA_RELACIONADA , :COD_TABELA_RELACIONADA)
     into :NOME_RAZAOSOCIAL, :CPF_CNPJ, :CNPJ_EMPRESA_ASSOCIADO, :CPF_CNPJ_CONTABILIDADE, :COD_TABELA_RELACIONADA;


     /*============== descricao do convenio de cobranca ===========*/
     select CONVENIO_COBRANCA.DESCRICAO
     from CONVENIO_COBRANCA
     where CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = :COD_CONVENIO_COBRANCA
     into :DESCRICAO_CONVENIO_COBRANCA;

     /*============== descricao do Tipo de cobranca ===========*/
     select TIPO_COBRANCA.DESCRICAO
     from TIPO_COBRANCA
     where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
     into :DESCRICAO_TIPO_COBRANCA;


     suspend;
  end

end^


ALTER PROCEDURE PROC_GUIA_ARRECADACAO_RECEBER (
    COD_ARRECADACAO INTEGER,
    COD_FORMA_ARRECADACAO VARCHAR(10),
    COD_FORMA_PAGAMENTO INTEGER,
    COD_USUARIO_PAGAMENTO INTEGER,
    COD_CAIXA_MOVIMENTACAO INTEGER,
    COD_FILIAL_PAGAMENTO INTEGER,
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_REPASSE_FEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_CONFEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_OUTROS NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    VALOR_MULTA NUMERIC(15,2),
    VALOR_JUROS NUMERIC(15,2),
    VALOR_OUTRAS_DESPESAS NUMERIC(15,2),
    VALOR_OUTROS_CREDITOS NUMERIC(15,2),
    VALOR_IOF NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    RECEBIMENTO_BANCARIO_BANCO INTEGER,
    RECEBIMENTO_BANCARIO_AGENCIA INTEGER,
    RECEBIMENTO_BANCARIO_COD_OCORRE INTEGER,
    RECEBIMENTO_BANCARIO_DESC_OCORR VARCHAR(80),
    OBS_PAGAMENTO VARCHAR(5000),
    OBS_SISTEMA VARCHAR(5000),
    FLAG VARCHAR(5),
    HASH_CODE VARCHAR(80),
    DATA_CREDITO DATE,
    RECEBIMENTO_BANCARIO VARCHAR(1),
    COD_CONTA_BANCARIA_MOVIMENTO VARCHAR(10),
    VALOR_DESCONTO NUMERIC(15,2))
AS
begin
  /* ===============================
   Esta procedure faz o recebimento das guias de arrecadacao
   a guia é localizada pelo codigo chave da tabela Arrecadacao passada no paramentro COD_GUIA_ARRECADACAO

   Dica: podemos fazer uma rotina de agrupar debitos antigo em um unico boleto
         criar uma tabela para relacionar quais os debitos estao vinculados a este doc de cobranca
         e fzer a verificacao nesta procedure e fazer os recebimentos nas guias relacionadas
  ==================================*/

UPDATE ARRECADACAO set ARRECADACAO.COD_FORMA_ARRECADACAO              = :COD_FORMA_ARRECADACAO
                        , ARRECADACAO.COD_FORMA_PAGAMENTO             = :COD_FORMA_PAGAMENTO
                        , ARRECADACAO.COD_USUARIO_PAGAMENTO           = :COD_USUARIO_PAGAMENTO
                        , ARRECADACAO.COD_CAIXA_MOVIMENTACAO          = :COD_CAIXA_MOVIMENTACAO
                        , ARRECADACAO.COD_FILIAL_PAGAMENTO            = :COD_FILIAL_PAGAMENTO
                        , ARRECADACAO.DATA_PAGAMENTO                  = :DATA_PAGAMENTO
                        , ARRECADACAO.VALOR_PAGAMENTO                 = :VALOR_PAGAMENTO
                        , ARRECADACAO.VALOR_REPASSE_FEDERACAO         = :VALOR_REPASSE_FEDERACAO
                        , ARRECADACAO.VALOR_REPASSE_CONFEDERACAO      = :VALOR_REPASSE_CONFEDERACAO
                        , ARRECADACAO.VALOR_REPASSE_OUTROS            = :VALOR_REPASSE_OUTROS
                        , ARRECADACAO.VALOR_TARIFA                    = :VALOR_TARIFA
                        , ARRECADACAO.VALOR_MULTA                     = :VALOR_MULTA
                        , ARRECADACAO.VALOR_JUROS                     = :VALOR_JUROS
                        , ARRECADACAO.VALOR_OUTRAS_DESPESAS           = :VALOR_OUTRAS_DESPESAS
                        , ARRECADACAO.VALOR_OUTROS_CREDITOS           = :VALOR_OUTROS_CREDITOS
                        , ARRECADACAO.VALOR_IOF                       = :VALOR_IOF
                        , ARRECADACAO.VALOR_CREDITADO                 = :VALOR_CREDITADO
                        , ARRECADACAO.RECEBIMENTO_BANCARIO_BANCO      = :RECEBIMENTO_BANCARIO_BANCO
                        , ARRECADACAO.RECEBIMENTO_BANCARIO_AGENCIA    = :RECEBIMENTO_BANCARIO_AGENCIA
                        , ARRECADACAO.RECEBIMENTO_BANCARIO_COD_OCORRE = :RECEBIMENTO_BANCARIO_COD_OCORRE
                        , ARRECADACAO.RECEBIMENTO_BANCARIO_DESC_OCORR = :RECEBIMENTO_BANCARIO_DESC_OCORR
                        , ARRECADACAO.OBS_PAGAMENTO                   = :OBS_PAGAMENTO
                        , ARRECADACAO.OBSERVACOES_SISTEMA             = :OBS_SISTEMA
                        , ARRECADACAO.FLAG                            = :FLAG
                        , ARRECADACAO.HASH_CODE_LINHA_ARQ_RETORNO     = :HASH_CODE
                        , ARRECADACAO.RECEBIMENTO_BANCARIO            = :RECEBIMENTO_BANCARIO
                        , ARRECADACAO.DATA_CREDITO                    = :DATA_CREDITO
                        , ARRECADACAO.COD_CONTA_BANCARIA_MOVIMENTO    = :COD_CONTA_BANCARIA_MOVIMENTO
                        , ARRECADACAO.VALOR_DESCONTO                  = :VALOR_DESCONTO


   where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO;
end^


ALTER PROCEDURE PROC_GUIAS (
    VERIFICA_GUIAS_NAO_GERADAS VARCHAR(1),
    SQLWHERE VARCHAR(5000),
    SQL_WHERE_GUIAS_NAO_GERADAS VARCHAR(5000))
RETURNS (
    COMENTARIO VARCHAR(200),
    TIPO VARCHAR(20),
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER)
AS
declare variable SQL varchar(5000);
BEGIN

   /*=====================================
       seleciona as guias sindicais
   =========================================*/

      SQL = '';
      SQL = :SQL ||'  SELECT EMPRESA.JF';
      SQL = :SQL ||'        , EMPRESA.CNPJ';
      SQL = :SQL ||'        , EMPRESA.RAZAOSOCIAL ';
      SQL = :SQL ||'        , EMPRESA.ENDERECO_CIDADE';
      SQL = :SQL ||'        , EMPRESA.TELEFONE1 ';
      SQL = :SQL ||'        , EMPRESA.TELEFONE2';

      
      SQL = :SQL ||'        , SINDICAL.DATA_EMISSAO';
      SQL = :SQL ||'        , SINDICAL.DATA_VENCIMENTO';
      SQL = :SQL ||'        , SINDICAL.DATA_BAIXA';
      SQL = :SQL ||'        , SINDICAL.COMPETENCIA';
      SQL = :SQL ||'        , SINDICAL.COMPLEMENTAR';
      SQL = :SQL ||'        , SINDICAL.VALOR';
      SQL = :SQL ||'        , SINDICAL.MULTA_JUROS';
      SQL = :SQL ||'        , SINDICAL.VALOR_BAIXA' ;
      SQL = :SQL ||'        , SINDICAL.CODIGO';
      SQL = :SQL ||'        , SINDICAL.EMPRESA';
      SQL = :SQL ||'        , SINDICAL.TARIFA';
      
      SQL = :SQL ||'        , CONTABILIDADE.JF';
      SQL = :SQL ||'        , CONTABILIDADE.CNPJ';
      SQL = :SQL ||'        , CONTABILIDADE.RAZAOSOCIAL';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE1';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE2';
      SQL = :SQL ||'        , USUARIO_BAIXA';

      SQL = :SQL ||'  FROM empresa';
      SQL = :SQL ||'    INNER JOIN SINDICAL ON  SINDICAL.EMPRESA = EMPRESA.CNPJ';
      SQL = :SQL ||'    LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR';
      SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
      SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';


       if (SQLWHERE IS NOT NULL) then
         SQL = :SQL ||' '|| SQLWHERE;

      FOR
         EXECUTE STATEMENT SQL
      INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
           , :GUIA_DATA_VENCIMENTO , :GUIA_DATA_BAIXA, :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
           , :GUIA_MULTA_JUROS, :GUIA_VALOR_BAIXA, :GUIA_CODIGO, :GUIA_EMPRESA
           , :GUIA_TARIFA , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
           , :CONTABILIDADE_TELEFONE2, :COD_USUARIO_BAIXA DO

      begin
         if (:GUIA_TARIFA is null) then
         begin
            GUIA_TARIFA = 0;
         end
         TIPO = 'SINDICAL';

         if (:GUIA_DATA_BAIXA is not null) then
         begin
           COMENTARIO = 'Recebido';
         END
         else
           COMENTARIO = 'Em Aberto';

         SUSPEND;
       end

   /*=====================================
      seleciona as guias FAA Anual
   ======================================*/
      TIPO = '';
      sql = '';
      SQL = :SQL ||'     SELECT EMPRESA.JF';
      SQL = :SQL ||'        , EMPRESA.CNPJ';
      SQL = :SQL ||'        , EMPRESA.RAZAOSOCIAL';
      SQL = :SQL ||'        , EMPRESA.ENDERECO_CIDADE';
      SQL = :SQL ||'        , EMPRESA.TELEFONE1';
      SQL = :SQL ||'        , EMPRESA.TELEFONE2';
      
      
      SQL = :SQL ||'        , ASSISTENCIAL.DATA_EMISSAO';
      SQL = :SQL ||'        , ASSISTENCIAL.DATA_VENCIMENTO';
      SQL = :SQL ||'        , ASSISTENCIAL.DATA_BAIXA';
      SQL = :SQL ||'        , ASSISTENCIAL.COMPETENCIA';
      SQL = :SQL ||'        , ASSISTENCIAL.COMPLEMENTAR';
      SQL = :SQL ||'        , ASSISTENCIAL.VALOR';
      SQL = :SQL ||'        , ASSISTENCIAL.MULTA_JUROS';
      SQL = :SQL ||'        , ASSISTENCIAL.VALOR_BAIXA';
      SQL = :SQL ||'        , ASSISTENCIAL.CODIGO';
      SQL = :SQL ||'        , ASSISTENCIAL.EMPRESA';
      SQL = :SQL ||'        , ASSISTENCIAL.TARIFA';
      
      SQL = :SQL ||'        , CONTABILIDADE.JF';
      SQL = :SQL ||'        , CONTABILIDADE.CNPJ';
      SQL = :SQL ||'        , CONTABILIDADE.RAZAOSOCIAL';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE1';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE2';
      SQL = :SQL ||'        , USUARIO_BAIXA';

      SQL = :SQL ||'  FROM empresa';
      SQL = :SQL ||'    INNER JOIN ASSISTENCIAL ON  ASSISTENCIAL.EMPRESA = EMPRESA.CNPJ';
      SQL = :SQL ||'    LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR';
      SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
      SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';
      if (SQLWHERE IS NOT NULL) then
         SQL = :SQL ||' '|| SQLWHERE;

      FOR
         EXECUTE STATEMENT SQL

      INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
           , :GUIA_DATA_VENCIMENTO , :GUIA_DATA_BAIXA, :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
           , :GUIA_MULTA_JUROS, :GUIA_VALOR_BAIXA, :GUIA_CODIGO, :GUIA_EMPRESA
           , :GUIA_TARIFA , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
           , :CONTABILIDADE_TELEFONE2, :COD_USUARIO_BAIXA DO

      begin
         if (:GUIA_TARIFA is null) then
         begin
            GUIA_TARIFA = 0;
         end
         TIPO = 'FAA - ANUAL';

         if (:GUIA_DATA_BAIXA is not null) then
         begin
           COMENTARIO = 'Recebido';
         END
         else
           COMENTARIO = 'Em Aberto';

         SUSPEND;
       end


   /*=====================================
      seleciona as guias FAA Mensal
   ======================================*/
      TIPO = '';
      sql = '';

      SQL = :SQL ||'    SELECT EMPRESA.JF ';
      SQL = :SQL ||'        , EMPRESA.CNPJ';
      SQL = :SQL ||'        , EMPRESA.RAZAOSOCIAL';
      SQL = :SQL ||'        , EMPRESA.ENDERECO_CIDADE';
      SQL = :SQL ||'        , EMPRESA.TELEFONE1';
      SQL = :SQL ||'        , EMPRESA.TELEFONE2';


      SQL = :SQL ||'        , CONFEDERATIVA.DATA_EMISSAO';
      SQL = :SQL ||'        , CONFEDERATIVA.DATA_VENCIMENTO';
      SQL = :SQL ||'        , CONFEDERATIVA.DATA_BAIXA';
      SQL = :SQL ||'        , CONFEDERATIVA.COMPETENCIA';
      SQL = :SQL ||'        , CONFEDERATIVA.COMPLEMENTAR';
      SQL = :SQL ||'        , CONFEDERATIVA.VALOR';
      SQL = :SQL ||'        , CONFEDERATIVA.MULTA_JUROS';
      SQL = :SQL ||'        , CONFEDERATIVA.VALOR_BAIXA';
      SQL = :SQL ||'        , CONFEDERATIVA.CODIGO';
      SQL = :SQL ||'        , CONFEDERATIVA.EMPRESA';
      SQL = :SQL ||'        , CONFEDERATIVA.TARIFA';

      SQL = :SQL ||'        , CONTABILIDADE.JF';
      SQL = :SQL ||'        , CONTABILIDADE.CNPJ';
      SQL = :SQL ||'        , CONTABILIDADE.RAZAOSOCIAL';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE1';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE2';
      SQL = :SQL ||'        , USUARIO_BAIXA';


      SQL = :SQL ||'  FROM empresa';
      SQL = :SQL ||'    INNER JOIN CONFEDERATIVA ON  CONFEDERATIVA.EMPRESA = EMPRESA.CNPJ';
      SQL = :SQL ||'    LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR';

      SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
      SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';


      if (SQLWHERE IS NOT NULL) then
         SQL = :SQL ||' '|| SQLWHERE;

      FOR
         EXECUTE STATEMENT SQL

      INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
           , :GUIA_DATA_VENCIMENTO , :GUIA_DATA_BAIXA, :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
           , :GUIA_MULTA_JUROS, :GUIA_VALOR_BAIXA, :GUIA_CODIGO, :GUIA_EMPRESA
           , :GUIA_TARIFA , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
           , :CONTABILIDADE_TELEFONE2, :COD_USUARIO_BAIXA DO
      begin
         if (:GUIA_TARIFA is null) then
         begin
            GUIA_TARIFA = 0;
         end
         TIPO = 'FAA - MENSAL';

         if (:GUIA_DATA_BAIXA is not null) then
         begin
           COMENTARIO = 'Recebido';
         END
         else
           COMENTARIO = 'Em Aberto';

         SUSPEND;
     END

   /*===========================================
      seleciona as guias de plano basico
   ============================================*/
      TIPO = '';
      SQL = '';
      SQL = :SQL ||'       SELECT EMPRESA.JF';
      SQL = :SQL ||'        , EMPRESA.CNPJ';
      SQL = :SQL ||'        , EMPRESA.RAZAOSOCIAL';     
      SQL = :SQL ||'        , EMPRESA.ENDERECO_CIDADE'; 
      SQL = :SQL ||'        , EMPRESA.TELEFONE1';       
      SQL = :SQL ||'        , EMPRESA.TELEFONE2';

      SQL = :SQL ||'        , PLANO_BASICO.DATA_EMISSAO';
      SQL = :SQL ||'        , PLANO_BASICO.DATA_VENCIMENTO';
      SQL = :SQL ||'        , PLANO_BASICO.DATA_BAIXA';
      SQL = :SQL ||'        , PLANO_BASICO.COMPETENCIA';
      SQL = :SQL ||'        , PLANO_BASICO.COMPLEMENTAR';
      SQL = :SQL ||'        , PLANO_BASICO.VALOR';
      SQL = :SQL ||'        , PLANO_BASICO.MULTA_JUROS';
      SQL = :SQL ||'        , PLANO_BASICO.VALOR_BAIXA';
      SQL = :SQL ||'        , PLANO_BASICO.CODIGO';
      SQL = :SQL ||'        , PLANO_BASICO.EMPRESA';
      SQL = :SQL ||'        , PLANO_BASICO.TARIFA';


      SQL = :SQL ||'        , CONTABILIDADE.JF';
      SQL = :SQL ||'        , CONTABILIDADE.CNPJ';
      SQL = :SQL ||'        , CONTABILIDADE.RAZAOSOCIAL';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE1';
      SQL = :SQL ||'        , CONTABILIDADE.TELEFONE2';

      SQL = :SQL ||'        , USUARIO_BAIXA';

      SQL = :SQL ||'  FROM empresa';
      SQL = :SQL ||'    INNER JOIN PLANO_BASICO ON  PLANO_BASICO.EMPRESA = EMPRESA.CNPJ';
      SQL = :SQL ||'    LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR';
      SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
      SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';

      if (SQLWHERE IS NOT NULL) then
         SQL = :SQL ||' '|| SQLWHERE;

      FOR
         EXECUTE STATEMENT SQL
      INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
           , :GUIA_DATA_VENCIMENTO , :GUIA_DATA_BAIXA, :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
           , :GUIA_MULTA_JUROS, :GUIA_VALOR_BAIXA, :GUIA_CODIGO, :GUIA_EMPRESA
           , :GUIA_TARIFA , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
           , :CONTABILIDADE_TELEFONE2, :COD_USUARIO_BAIXA DO
      begin
         if (:GUIA_TARIFA is null) then
         begin
            GUIA_TARIFA = 0;
         END
         Tipo = 'PLANO BÁSICO';

         if (:GUIA_DATA_BAIXA is not null) then
         begin
           COMENTARIO = 'Recebido';
         END
         else
           COMENTARIO = 'Em Aberto';

    
         SUSPEND;
      end

      /*=====================================
        Verifica se existem guias SINDICAIS nao geradas no sistema.
        O paramentro de entrada da procedure VERIFICA_GUIAS_NAO_GERADAS deve ser T
        Geralmente é usada para guias em aberto e nao pagas.
        O paramentro VERIFICA_GUIAS_NAO_GERADAS na tabela CONFIGURACAO_SINDICAL
        Tambem deve ser 'T'
      =======================================*/
      if (:VERIFICA_GUIAS_NAO_GERADAS <> 'T') then
      begin
         EXIT;
      END

     select CONFIGURACAO_SINDICAL.VERIFICA_GUIAS_NAO_GERADAS
     from CONFIGURACAO_SINDICAL
     INTO :VERIFICA_GUIAS_NAO_GERADAS;

     if (:VERIFICA_GUIAS_NAO_GERADAS = 'T') then
     begin

        SQL = '';
        SQL = SQL || ' SELECT EMPRESA.CNPJ';
        SQL = SQL || ' FROM EMPRESA';
        SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
      SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';

   
        if (:SQL_WHERE_GUIAS_NAO_GERADAS IS NOT NULL) then
           SQL = :SQL || :SQL_WHERE_GUIAS_NAO_GERADAS;
   
        FOR
           EXECUTE STATEMENT SQL
        INTO :EMPRESA_CNPJ DO
        BEGIN
           FOR
           SELECT PROC_SINDICAL_NAO_GERADA.EMPRESA_JF, PROC_SINDICAL_NAO_GERADA.EMPRESA_CNPJ , PROC_SINDICAL_NAO_GERADA.EMPRESA_RAZAOSOCIAL
                  , PROC_SINDICAL_NAO_GERADA.EMPRESA_ENDERECO_CIDADE, PROC_SINDICAL_NAO_GERADA.EMPRESA_TELEFONE1, PROC_SINDICAL_NAO_GERADA.EMPRESA_TELEFONE2
                  , PROC_SINDICAL_NAO_GERADA.GUIA_DATA_EMISSAO, PROC_SINDICAL_NAO_GERADA.GUIA_DATA_VENCIMENTO
                  , PROC_SINDICAL_NAO_GERADA.GUIA_COMPETENCIA, PROC_SINDICAL_NAO_GERADA.GUIA_COMPLEMENTAR, PROC_SINDICAL_NAO_GERADA.GUIA_VALOR
                  , PROC_SINDICAL_NAO_GERADA.CONTABILIDADE_JF
                  , PROC_SINDICAL_NAO_GERADA.CONTABILIDADE_CNPJ , PROC_SINDICAL_NAO_GERADA.CONTABILIDADE_RAZAOSOCIAL
                  , PROC_SINDICAL_NAO_GERADA.CONTABILIDADE_TELEFONE1, PROC_SINDICAL_NAO_GERADA.CONTABILIDADE_TELEFONE2
                  , PROC_SINDICAL_NAO_GERADA.COMENTARIO_SITUACAO
      
              FROM PROC_SINDICAL_NAO_GERADA(:EMPRESA_CNPJ)
   
           INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
                   , :GUIA_DATA_VENCIMENTO ,  :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
                   , CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
                   , :CONTABILIDADE_TELEFONE2, :COMENTARIO DO
   
           BEGIN
             TIPO = 'SINDICAL';
             GUIA_DATA_BAIXA  = NULL;
             GUIA_MULTA_JUROS = NULL;
             GUIA_VALOR_BAIXA = NULL;
             GUIA_CODIGO      = NULL;
             GUIA_EMPRESA     = NULL;
             GUIA_TARIFA      = NULL;
             COD_USUARIO_BAIXA = NULL;
            SUSPEND;
           END
        END
     END

      /*=====================================
        Verifica se existem guias FAA MENSAL
        nao geradas no sistema.
        O paramentro de entrada da procedure VERIFICA_GUIAS_NAO_GERADAS deve ser T
        Geralmente é usada para guias em aberto e nao pagas.
        O paramentro VERIFICA_GUIAS_NAO_GERADAS na tabela CONFIGURACAO_CONFEDERATIVA
        Tambem deve ser 'T'
      =======================================*/
     select CONFIGURACAO_CONFEDERATIVA.VERIFICA_GUIAS_NAO_GERADAS
     from CONFIGURACAO_CONFEDERATIVA
     INTO :VERIFICA_GUIAS_NAO_GERADAS;

     if (:VERIFICA_GUIAS_NAO_GERADAS = 'T') then
     begin

        SQL = '';
        SQL = SQL || ' SELECT EMPRESA.CNPJ';
        SQL = SQL || ' FROM EMPRESA';
        SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
        SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';

        if (:SQL_WHERE_GUIAS_NAO_GERADAS IS NOT NULL) then
           SQL = :SQL || :SQL_WHERE_GUIAS_NAO_GERADAS;
   
        FOR
           EXECUTE STATEMENT SQL
        INTO :EMPRESA_CNPJ DO
        BEGIN
           FOR
           SELECT PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_JF, PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_CNPJ , PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_RAZAOSOCIAL
                  , PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_ENDERECO_CIDADE, PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_TELEFONE1, PROC_ASSIST_MENSAL_NAO_GERADA.EMPRESA_TELEFONE2
                  , PROC_ASSIST_MENSAL_NAO_GERADA.GUIA_DATA_EMISSAO, PROC_ASSIST_MENSAL_NAO_GERADA.GUIA_DATA_VENCIMENTO
                  , PROC_ASSIST_MENSAL_NAO_GERADA.GUIA_COMPETENCIA, PROC_ASSIST_MENSAL_NAO_GERADA.GUIA_COMPLEMENTAR, PROC_ASSIST_MENSAL_NAO_GERADA.GUIA_VALOR
                  , PROC_ASSIST_MENSAL_NAO_GERADA.CONTABILIDADE_JF
                  , PROC_ASSIST_MENSAL_NAO_GERADA.CONTABILIDADE_CNPJ , PROC_ASSIST_MENSAL_NAO_GERADA.CONTABILIDADE_RAZAOSOCIAL
                  , PROC_ASSIST_MENSAL_NAO_GERADA.CONTABILIDADE_TELEFONE1, PROC_ASSIST_MENSAL_NAO_GERADA.CONTABILIDADE_TELEFONE2
                  , PROC_ASSIST_MENSAL_NAO_GERADA.COMENTARIO_SITUACAO
      
              FROM PROC_ASSIST_MENSAL_NAO_GERADA(:EMPRESA_CNPJ)
   
           INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
                   , :GUIA_DATA_VENCIMENTO ,  :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
                   , CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
                   , :CONTABILIDADE_TELEFONE2, :COMENTARIO DO
   
           BEGIN
             TIPO = 'FAA - MENSAL';
             GUIA_DATA_BAIXA  = NULL;
             GUIA_MULTA_JUROS = NULL;
             GUIA_VALOR_BAIXA = NULL;
             GUIA_CODIGO      = NULL;
             GUIA_EMPRESA     = NULL;
             GUIA_TARIFA      = NULL;
             COD_USUARIO_BAIXA = NULL;
            SUSPEND;
           END
        END

     END


      /*=====================================
        Verifica se existem guias FAA ANUAL
        nao geradas no sistema.
        O paramentro de entrada da procedure VERIFICA_GUIAS_NAO_GERADAS deve ser T
        Geralmente é usada para guias em aberto e nao pagas.
        O paramentro VERIFICA_GUIAS_NAO_GERADAS na tabela CONFIGURACAO_CONFEDERATIVA
        Tambem deve ser 'T'
      =======================================*/
     select CONFIGURACAO_ASSISTENCIAL.VERIFICA_GUIAS_NAO_GERADAS
     from CONFIGURACAO_ASSISTENCIAL
     INTO :VERIFICA_GUIAS_NAO_GERADAS;

     if (:VERIFICA_GUIAS_NAO_GERADAS = 'T') then
     begin

        SQL = '';
        SQL = SQL || ' SELECT EMPRESA.CNPJ';
        SQL = SQL || ' FROM EMPRESA';
        SQL = :SQL ||'    inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS';
        SQL = :SQL ||'                                 and EMPRESA_STATUS.GERA_GUIAS = '||'''T''';

   
        if (:SQL_WHERE_GUIAS_NAO_GERADAS IS NOT NULL) then
           SQL = :SQL || :SQL_WHERE_GUIAS_NAO_GERADAS;
   
        FOR
           EXECUTE STATEMENT SQL
        INTO :EMPRESA_CNPJ DO
        BEGIN
           FOR
           SELECT PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_JF, PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_CNPJ , PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_RAZAOSOCIAL
                  , PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_ENDERECO_CIDADE, PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_TELEFONE1, PROC_ASSIST_ANUAL_NAO_GERADA.EMPRESA_TELEFONE2
                  , PROC_ASSIST_ANUAL_NAO_GERADA.GUIA_DATA_EMISSAO, PROC_ASSIST_ANUAL_NAO_GERADA.GUIA_DATA_VENCIMENTO
                  , PROC_ASSIST_ANUAL_NAO_GERADA.GUIA_COMPETENCIA, PROC_ASSIST_ANUAL_NAO_GERADA.GUIA_COMPLEMENTAR, PROC_ASSIST_ANUAL_NAO_GERADA.GUIA_VALOR
                  , PROC_ASSIST_ANUAL_NAO_GERADA.CONTABILIDADE_JF
                  , PROC_ASSIST_ANUAL_NAO_GERADA.CONTABILIDADE_CNPJ , PROC_ASSIST_ANUAL_NAO_GERADA.CONTABILIDADE_RAZAOSOCIAL
                  , PROC_ASSIST_ANUAL_NAO_GERADA.CONTABILIDADE_TELEFONE1, PROC_ASSIST_ANUAL_NAO_GERADA.CONTABILIDADE_TELEFONE2
                  , PROC_ASSIST_ANUAL_NAO_GERADA.COMENTARIO_SITUACAO
      
              FROM PROC_ASSIST_ANUAL_NAO_GERADA(:EMPRESA_CNPJ)
   
           INTO :EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1, :EMPRESA_TELEFONE2, :GUIA_DATA_EMISSAO
                   , :GUIA_DATA_VENCIMENTO ,  :GUIA_COMPETENCIA, :GUIA_COMPLEMENTAR, :GUIA_VALOR
                   , CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
                   , :CONTABILIDADE_TELEFONE2, :COMENTARIO DO
   
           BEGIN
             TIPO = 'FAA - ANUAL';
             GUIA_DATA_BAIXA  = NULL;
             GUIA_MULTA_JUROS = NULL;
             GUIA_VALOR_BAIXA = NULL;
             GUIA_CODIGO      = NULL;
             GUIA_EMPRESA     = NULL;
             GUIA_TARIFA      = NULL;
             COD_USUARIO_BAIXA = NULL;
            SUSPEND;
           END
        END
     END


END^


ALTER PROCEDURE PROC_HISTORICO_SITUACAO_SOCIO (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    QUANTIDADE INTEGER,
    VALOR INTEGER,
    NOVO VARCHAR(80),
    ANTIGO VARCHAR(80),
    COD_STATUS_ANTIGO INTEGER,
    COD_STATUS_NOVO INTEGER)
AS
begin
  for
      select count( ASSOCIADO_MUDANCA.CODIGO)
          , ASSOCIADO_MUDANCA.ANTIGO
          , ASSOCIADO_MUDANCA.novo

      from ASSOCIADO_MUDANCA
      where ASSOCIADO_MUDANCA.DATA BETWEEN :DATA_INICIO and :DATA_FIM
      group by ASSOCIADO_MUDANCA.ANTIGO , ASSOCIADO_MUDANCA.NOVO 

     into :QUANTIDADE , :COD_STATUS_ANTIGO , :COD_STATUS_NOVO do
     begin

        select SITUACAO.DESCRICAO from SITUACAO where situacao.CODIGO = :COD_STATUS_ANTIGO into :ANTIGO;
        select SITUACAO.DESCRICAO from SITUACAO where situacao.CODIGO = :COD_STATUS_NOVO into :NOVO;
   
        begin
           select sum(ASSOCIATIVA.VALOR)
           from ASSOCIATIVA
              inner join ASSOCIADO_MUDANCA on ASSOCIADO_MUDANCA.ASSOCIADO = ASSOCIATIVA.ASSOCIADO
           where ASSOCIADO_MUDANCA.ANTIGO = :COD_STATUS_ANTIGO
              and ASSOCIADO_MUDANCA.NOVO = :COD_STATUS_NOVO
              and ASSOCIATIVA.DATA BETWEEN :DATA_INICIO and :DATA_FIM
              and ASSOCIADO_MUDANCA.DATA BETWEEN :DATA_INICIO and :DATA_FIM
           into VALOR;
        end
        suspend;
     end
end^


ALTER PROCEDURE PROC_IMPORTA_GUIAS (
    COD_TIPO_COBRANCA_SINDICAL INTEGER,
    COD_TIPO_COBRANCA_FAA_MENSAL INTEGER,
    COD_TIPO_COBRANCA_FAA_ANUAL INTEGER,
    COD_TIPO_COBRANCA_ASSOCIATIVA INTEGER,
    COD_TIPO_COBRANCA_PLANO_BASICO INTEGER)
RETURNS (
    COD_ARRECADACAO INTEGER)
AS
declare variable CODIGO integer;
declare variable DATA_EMISSAO date;
declare variable EMPRESA varchar(14);
declare variable DATA_VENCIMENTO date;
declare variable DATA_BAIXA date;
declare variable COMPETENCIA integer;
declare variable COMPLEMENTAR integer;
declare variable VALOR numeric(15,2);
declare variable MULTA_JUROS numeric(15,2);
declare variable VALOR_BAIXA numeric(15,2);
declare variable USUARIO_EMISSAO integer;
declare variable USUARIO_BAIXA integer;
declare variable OBS_BAIXA varchar(5000);
declare variable TARIFA numeric(15,2);
declare variable REPASSE_FEDERACAO numeric(15,2);
declare variable REPASSE_CONFEDERACAO numeric(15,2);
declare variable FORMA_BAIXA varchar(80);
declare variable COD_FORMA_PAGAMENTO integer;
declare variable COD_CONVENIO_COBRANCA integer;
declare variable COD_TIPO_COBRANCA integer;
declare variable COD_PADRAO_BANCARIO integer;
begin
  /*================================
     importa os dados das tabelas de pagamento para a tabela de arrecadacao
     Tem q cadastrar os convenio de cobranca e os tipos de cobranca antes da importacao dos dados
     informar nos paramentros de entrada os codigos do tipo de cobranca para cada uma das tabelas que serão importadas

   Sript padrão para preencher as tabelas de convenio de cobranca e tipo de cobranca

       INSERT INTO PADRAO_BANCARIO (COD_PADRAO_BANCARIO, DESCRICAO, OBS)
                            VALUES (2, 'SICAP', NULL);
       INSERT INTO PADRAO_BANCARIO (COD_PADRAO_BANCARIO, DESCRICAO, OBS)
                            VALUES (1, 'SITCS', NULL);
       
       
       INSERT INTO CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA, COD_BANCO, COD_PADRAO_BANCARIO, CODIGO_DO_CEDENTE, DESCRICAO, DATA_LIBERACAO, NUMERO_CONVENIO, CONTA, CONTA_DV, AGENCIA, AGENCIA_DV, CARTEIRA, GERA_REMESSA, ATIVO, EXTENSAO_ARQUIVO_RETORNO, ACEITE, ESPECIE_DO_DOCUMENTO, NOSSO_NUMERO, PERCENTUAL_JUROS, PERCENTUAL_MULTA, PERCENTUAL_DESCONTO, NUMERO_ULTIMA_REMESSA, LOCAL_ARQUIVO_RETORNO, LOCAL_ARQUIVO_REMESSA, EXTENSAO_ARQUIVO_REMESSA, MOVER_ARQUIVOS_PROCESSADOS_PARA, FORCA_EXTENSAO_NOS_RETORNOS, PERMITE_ALTERAR_VENCIMENTO, DIAS_VENC_COMPLEMENTO_VALOR, COD_CONTA_BANCARIA)
                              VALUES (1, '104', 2, '613078', 'SICAP', NULL, '613078', '03900045', 0, '0120', 0, '1', 'F', 'T', 'RET', 'S', NULL, NULL, 0, 0, 0, NULL, '\\SERVIDOR\SINS\RETORNOS\SICAP', NULL, NULL, '\\SERVIDOR\SINS\DADOS\RETORNOS\SICAP', 'F', 'F', NULL, null);
       INSERT INTO CONVENIO_COBRANCA (COD_CONVENIO_COBRANCA, COD_BANCO, COD_PADRAO_BANCARIO, CODIGO_DO_CEDENTE, DESCRICAO, DATA_LIBERACAO, NUMERO_CONVENIO, CONTA, CONTA_DV, AGENCIA, AGENCIA_DV, CARTEIRA, GERA_REMESSA, ATIVO, EXTENSAO_ARQUIVO_RETORNO, ACEITE, ESPECIE_DO_DOCUMENTO, NOSSO_NUMERO, PERCENTUAL_JUROS, PERCENTUAL_MULTA, PERCENTUAL_DESCONTO, NUMERO_ULTIMA_REMESSA, LOCAL_ARQUIVO_RETORNO, LOCAL_ARQUIVO_REMESSA, EXTENSAO_ARQUIVO_REMESSA, MOVER_ARQUIVOS_PROCESSADOS_PARA, FORCA_EXTENSAO_NOS_RETORNOS, PERMITE_ALTERAR_VENCIMENTO, DIAS_VENC_COMPLEMENTO_VALOR, COD_CONTA_BANCARIA)
                              VALUES (2, '104', 1, '005093072229', 'SINDICAL', NULL, '107222', '03001311', 8, '0120', 2, NULL, 'F', 'T', '*.RET', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '\\SERVIDOR\SINS\RETORNOS\SITCS', NULL, NULL, '\\\SERVIDOR\SINS\DADOS\RETORNOS\SITCS', 'T', NULL, NULL, null);
       
       INSERT INTO TIPO_COBRANCA (COD_TIPO_COBRANCA, COD_CONVENIO_COBRANCA, DESCRICAO, ATIVO, TITULO_DO_BOLETO_COBRANCA, FLAG, LOCAL_DE_PAGAMENTO, INSTRUCAO_COBRANCA, CAMINHO_IMAGEM, CAMINHO_IMAGEM_CARNE, OBSERVACAO_BOLETO, MULTA_JUROS_AUTOMATICO, MODELO_DE_BOLETO, COD_PLANO_CONTA, NAO_GERAR_SE_JA_EXISTIR, VERIFICAR_SE_NAO_GERADA, PERIODICIDADE)
                          VALUES (1, 1, 'MENSALIDADE', 'T', 'MENSALIDADE', NULL, 'PAGAR APENAS EM CASAS LOTÉRICAS E REDE CAIXA ECONÔMICA', '', '\\Servidor\sins\DADOS\FOTOS\cabecalho.jpg', '\\servidor\SINS\DADOS\FOTOS\carne.jpg', NULL, 'T', 'Boleto Padrão', 6, 'T', 'F', 'MENSAL');
       INSERT INTO TIPO_COBRANCA (COD_TIPO_COBRANCA, COD_CONVENIO_COBRANCA, DESCRICAO, ATIVO, TITULO_DO_BOLETO_COBRANCA, FLAG, LOCAL_DE_PAGAMENTO, INSTRUCAO_COBRANCA, CAMINHO_IMAGEM, CAMINHO_IMAGEM_CARNE, OBSERVACAO_BOLETO, MULTA_JUROS_AUTOMATICO, MODELO_DE_BOLETO, COD_PLANO_CONTA, NAO_GERAR_SE_JA_EXISTIR, VERIFICAR_SE_NAO_GERADA, PERIODICIDADE)
                          VALUES (2, 1, 'ASSISTENCIAL - ANUAL', 'T', 'GUIA ASSISTENCIAL', NULL, 'PAGAR APENAS EM CASAS LOTÉRICAS E REDE CAIXA ECONÔMICA', '', '\\Servidor\sins\DADOS\FOTOS\carne.jpg', '\\Servidor\sins\DADOS\FOTOS\carne.jpg', NULL, 'T', 'Sicap FAA', 7, 'T', 'T', 'ANUAL');
       INSERT INTO TIPO_COBRANCA (COD_TIPO_COBRANCA, COD_CONVENIO_COBRANCA, DESCRICAO, ATIVO, TITULO_DO_BOLETO_COBRANCA, FLAG, LOCAL_DE_PAGAMENTO, INSTRUCAO_COBRANCA, CAMINHO_IMAGEM, CAMINHO_IMAGEM_CARNE, OBSERVACAO_BOLETO, MULTA_JUROS_AUTOMATICO, MODELO_DE_BOLETO, COD_PLANO_CONTA, NAO_GERAR_SE_JA_EXISTIR, VERIFICAR_SE_NAO_GERADA, PERIODICIDADE)
                          VALUES (4, 1, 'SOCIAL EMPRESA', 'T', 'SOCIAL EMPRESA', NULL, NULL, NULL, NULL, NULL, NULL, 'F', 'Sicap FAA', 6, 'T', 'F', 'MENSAL');
       INSERT INTO TIPO_COBRANCA (COD_TIPO_COBRANCA, COD_CONVENIO_COBRANCA, DESCRICAO, ATIVO, TITULO_DO_BOLETO_COBRANCA, FLAG, LOCAL_DE_PAGAMENTO, INSTRUCAO_COBRANCA, CAMINHO_IMAGEM, CAMINHO_IMAGEM_CARNE, OBSERVACAO_BOLETO, MULTA_JUROS_AUTOMATICO, MODELO_DE_BOLETO, COD_PLANO_CONTA, NAO_GERAR_SE_JA_EXISTIR, VERIFICAR_SE_NAO_GERADA, PERIODICIDADE)
                          VALUES (3, 2, 'SINDICAL', 'T', NULL, NULL, 'PAGAR APENAS EM CASAS LOTÉRICAS E REDE CAIXA ECONÔMICA', '- Guia vencida - cobrar multa de 10% nos 30 primeiros dias, com adicional de 2% por mês subseqüente de atraso e juros de mora de 1% ao mês e correção monetária.', NULL, NULL, NULL, 'T', 'Boleto Sindical', 4, 'F', 'T', 'ANUAL');
       
       
       INSERT INTO LOCAL_EMISSAO_GUIAS (COD_LOCAL_EMISSAO, DESCRICAO_LOCAL)
                                VALUES (1, 'WEB');
       INSERT INTO LOCAL_EMISSAO_GUIAS (COD_LOCAL_EMISSAO, DESCRICAO_LOCAL)
                                VALUES (0, 'LOCAL');
       INSERT INTO LOCAL_EMISSAO_GUIAS (COD_LOCAL_EMISSAO, DESCRICAO_LOCAL)
                                VALUES (2, 'TERCEIROS');
   ================================== */

   SELECT COALESCE (MAX (arrecadacao.cod_arrecadacao) , 0 ) FROM arrecadacao
   INTO :cod_arrecadacao;


/*=============== GUIAS SINDICAIS =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_SINDICAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select sindical.codigo
          , sindical.empresa
          , sindical.data_emissao
          , sindical.data_vencimento
          , sindical.data_baixa
          , sindical.competencia
          , sindical.complementar
          , sindical.valor
          , sindical.multa_juros
          , sindical.valor_baixa
          , sindical.usuario_emissao
          , sindical.usuario_baixa
          , sindical.obs_baixa
          , sindical.tarifa
          , sindical.repasse_federacao
          , sindical.repasse_confederacao
          , sindical.forma_baixa
          , sindical.cod_forma_pagamento
      from sindical
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor);


      end

/*=============== GUIAS confederativa FAA MENSAL =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_FAA_MENSAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select CONFEDERATIVA.codigo
          , CONFEDERATIVA.EMPRESA
          , CONFEDERATIVA.DATA_EMISSAO
          , CONFEDERATIVA.DATA_VENCIMENTO
          , CONFEDERATIVA.DATA_BAIXA
          , CONFEDERATIVA.COMPETENCIA
          , CONFEDERATIVA.COMPLEMENTAR
          , CONFEDERATIVA.VALOR
          , CONFEDERATIVA.MULTA_JUROS
          , CONFEDERATIVA.VALOR_BAIXA
          , CONFEDERATIVA.USUARIO_EMISSAO
          , CONFEDERATIVA.USUARIO_BAIXA
          , CONFEDERATIVA.OBS_BAIXA
          , CONFEDERATIVA.TARIFA
          , 0
          , 0
          , CONFEDERATIVA.FORMA_BAIXA
          , CONFEDERATIVA.COD_FORMA_PAGAMENTO
      from CONFEDERATIVA
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

      end

/*=============== GUIAS ASSISTENCIAL FAA ANUAL =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_FAA_ANUAL;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO

  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select ASSISTENCIAL.codigo
          , ASSISTENCIAL.EMPRESA
          , ASSISTENCIAL.DATA_EMISSAO
          , ASSISTENCIAL.DATA_VENCIMENTO
          , ASSISTENCIAL.DATA_BAIXA
          , ASSISTENCIAL.COMPETENCIA
          , ASSISTENCIAL.COMPLEMENTAR
          , ASSISTENCIAL.VALOR
          , ASSISTENCIAL.MULTA_JUROS
          , ASSISTENCIAL.VALOR_BAIXA
          , ASSISTENCIAL.USUARIO_EMISSAO
          , ASSISTENCIAL.USUARIO_BAIXA
          , ASSISTENCIAL.OBS_BAIXA
          , ASSISTENCIAL.TARIFA
          , 0
          , 0
          , ASSISTENCIAL.FORMA_BAIXA
          , ASSISTENCIAL.COD_FORMA_PAGAMENTO
      from ASSISTENCIAL
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO , OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

      end

/*=============== GUIAS SOCIAL - ASSOCIATIVAS =====================*/

  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_ASSOCIATIVA;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO

  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select SOCIAL.CODIGO
          , SOCIAL.EMPRESA
          , SOCIAL.DATA_EMISSAO
          , SOCIAL.DATA_VENCIMENTO
          , SOCIAL.DATA_BAIXA
          , SOCIAL.COMPETENCIA
          , SOCIAL.COMPLEMENTAR
          , SOCIAL.VALOR
          , SOCIAL.MULTA_JUROS
          , SOCIAL.VALOR_BAIXA
          , SOCIAL.USUARIO_EMISSAO
          , SOCIAL.USUARIO_BAIXA
          , ''
          , 0
          , 0
          , 0
          , ''
          , SOCIAL.COD_FORMA_PAGAMENTO
      from SOCIAL
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

      end


/*=============== GUIAS SOCIAL - Plano basico =====================*/
  COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA_PLANO_BASICO;
  select TIPO_COBRANCA.COD_TIPO_COBRANCA
       , TIPO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  from   TIPO_COBRANCA
     inner join CONVENIO_COBRANCA on CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = TIPO_COBRANCA.COD_CONVENIO_COBRANCA
     inner join PADRAO_BANCARIO on PADRAO_BANCARIO.COD_PADRAO_BANCARIO = CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
  where TIPO_COBRANCA.COD_TIPO_COBRANCA = :COD_TIPO_COBRANCA
  into :COD_TIPO_COBRANCA, :COD_CONVENIO_COBRANCA , :COD_PADRAO_BANCARIO;

  for
     select PLANO_BASICO.CODIGO
          , PLANO_BASICO.EMPRESA
          , PLANO_BASICO.DATA_EMISSAO
          , PLANO_BASICO.DATA_VENCIMENTO
          , PLANO_BASICO.DATA_BAIXA
          , PLANO_BASICO.COMPETENCIA
          , PLANO_BASICO.COMPLEMENTAR
          , PLANO_BASICO.VALOR
          , PLANO_BASICO.MULTA_JUROS
          , PLANO_BASICO.VALOR_BAIXA
          , PLANO_BASICO.USUARIO_EMISSAO
          , PLANO_BASICO.USUARIO_BAIXA
          , PLANO_BASICO.OBS_BAIXA
          , PLANO_BASICO.TARIFA
          , 0
          , 0
          , PLANO_BASICO.FORMA_BAIXA
          , PLANO_BASICO.COD_FORMA_PAGAMENTO
      from PLANO_BASICO
      into :codigo , :empresa , :data_emissao , :data_vencimento
          , :data_baixa , :competencia , :complementar , :valor , :multa_juros
          , :valor_baixa , :usuario_emissao , :usuario_baixa , :obs_baixa , :tarifa
          , :repasse_federacao , :repasse_confederacao , :forma_baixa , :cod_forma_pagamento do
      begin
         cod_arrecadacao = :cod_arrecadacao + 1;

         INSERT INTO ARRECADACAO (COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO, COD_LOCAL_EMISSAO, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO,
                                  COD_TABELA_RELACIONADA, TABELA_RELACIONADA,
                                  SEU_NUMERO, NOSSO_NUMERO, DATA_EMISSAO, DATA_VENCIMENTO,
                                  COMPETENCIA, COMPLEMENTAR, DATA_PAGAMENTO, VALOR_PAGAMENTO,
                                  OBS_PAGAMENTO, OBSERVACOES_SISTEMA, FLAG,  COD_FORMA_ARRECADACAO,
                                  COD_FORMA_PAGAMENTO,  VALOR_A_PAGAR, VALOR_REPASSE_FEDERACAO, VALOR_REPASSE_CONFEDERACAO,
                                  VALOR_REPASSE_OUTROS, VALOR_TARIFA, VALOR_MULTA,
                                  VALOR_CREDITADO, VALOR_BASE_DE_CALCULO, OBS_OUTRAS) VALUES
                                  (:cod_arrecadacao, :COD_CONVENIO_COBRANCA , :COD_TIPO_COBRANCA, :COD_PADRAO_BANCARIO ,0 , :usuario_emissao, :usuario_baixa, :empresa ,'EMPRESA',:codigo,:codigo,:data_emissao,
                                   :data_vencimento,:competencia, :complementar, :data_baixa, :valor_baixa, :obs_baixa, 'IMPORTACAO PARA A TABELA DE ARRECADAÇÃO',NULL,
                                    '00', :cod_forma_pagamento,  :valor, :repasse_federacao, :repasse_confederacao, 0, :tarifa,
                                   :multa_juros, :valor_baixa, :valor, :FORMA_BAIXA);

      end


end^


ALTER PROCEDURE PROC_IMPORTA_PGTO_SERVICO
RETURNS (
    CODIGO INTEGER,
    COD_LANCAMENTO_SERVICO INTEGER,
    COD_USUARIO_LANCAMENTO INTEGER,
    COD_USUARIO_BAIXA INTEGER,
    COD_FORMA_PAGAMENTO INTEGER,
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    DATA_BAIXA DATE,
    VALOR_BAIXA NUMERIC(15,2),
    MULTA NUMERIC(15,2),
    JUROS NUMERIC(15,2),
    OUTROS NUMERIC(15,2),
    DATA_LANCAMENTO DATE,
    MOVIMENTO_CAIXA NUMERIC(15,0),
    DESCONTO NUMERIC(15,2))
AS
declare variable ID_COBRANCA integer;
declare variable ID_CONVENIO integer;
declare variable COD_ARRECADACAO integer;
declare variable ID_PADRAO_BANCARIO integer;
begin
  /*============= o tipo de cobranca "servicos" ===========*/
   ID_COBRANCA = 7;

   SELECT CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA
       , CONVENIO_COBRANCA.COD_PADRAO_BANCARIO
   FROM CONVENIO_COBRANCA
     inner join TIPO_COBRANCA on TIPO_COBRANCA.COD_CONVENIO_COBRANCA = CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA
   WHERE TIPO_COBRANCA.COD_TIPO_COBRANCA = :ID_COBRANCA
   INTO :ID_CONVENIO, :ID_PADRAO_BANCARIO;

   SELECT GEN_ID(GEN_ARRECADACAO, 1) FROM RDB$DATABASE
   into :COD_ARRECADACAO;

  /* ================= importa os pgto dos servicoes ( convencio ) para a tabela de arrecadacao ============ */

  for select PAGAMENTO_SERVICO.CODIGO
           , PAGAMENTO_SERVICO.COD_LANCAMENTO_SERVICO
           , PAGAMENTO_SERVICO.COD_USUARIO_LANCAMENTO
           , PAGAMENTO_SERVICO.COD_USUARIO_BAIXA
           , PAGAMENTO_SERVICO.COD_FORMA_PAGAMENTO
           , PAGAMENTO_SERVICO.DATA_VENCIMENTO
           , PAGAMENTO_SERVICO.VALOR
           , PAGAMENTO_SERVICO.DATA_BAIXA
           , PAGAMENTO_SERVICO.VALOR_BAIXA
           , PAGAMENTO_SERVICO.MULTA
           , PAGAMENTO_SERVICO.JUROS
           , PAGAMENTO_SERVICO.OUTROS
           , PAGAMENTO_SERVICO.DATA_LANCAMENTO
           , PAGAMENTO_SERVICO.MOVIMENTO_CAIXA
           , PAGAMENTO_SERVICO.DESCONTO
       from PAGAMENTO_SERVICO
    into :CODIGO , :COD_LANCAMENTO_SERVICO , :COD_USUARIO_LANCAMENTO , :COD_USUARIO_BAIXA
           , :COD_FORMA_PAGAMENTO , :DATA_VENCIMENTO , :VALOR_A_PAGAR , :DATA_BAIXA , :VALOR_BAIXA
           , :MULTA , :JUROS , :OUTROS , :DATA_LANCAMENTO , :MOVIMENTO_CAIXA , :DESCONTO do
    begin
       INSERT INTO ARRECADACAO ( COD_ARRECADACAO, COD_CONVENIO_COBRANCA, COD_TIPO_COBRANCA, COD_PADRAO_BANCARIO , COD_TABELA_RELACIONADA, TABELA_RELACIONADA, COD_USUARIO_EMISSAO, COD_USUARIO_PAGAMENTO, COD_FORMA_PAGAMENTO,
                                 COD_CAIXA_MOVIMENTACAO, DATA_EMISSAO, DATA_VENCIMENTO, DATA_PAGAMENTO, VALOR_A_PAGAR,
                                 VALOR_PAGAMENTO, VALOR_CREDITADO, VALOR_MULTA, VALOR_JUROS, VALOR_OUTROS_CREDITOS, VALOR_DESCONTO) values
                                 (
                                   :COD_ARRECADACAO, :ID_CONVENIO, :ID_COBRANCA, :ID_PADRAO_BANCARIO ,:COD_LANCAMENTO_SERVICO,'LANCAMENTOS_SERVICOS' ,:COD_USUARIO_LANCAMENTO, :COD_USUARIO_BAIXA,
                                   :COD_FORMA_PAGAMENTO, null, :DATA_LANCAMENTO, :DATA_VENCIMENTO,
                                   :DATA_BAIXA, :VALOR_A_PAGAR, :VALOR_BAIXA, :VALOR_BAIXA, :MULTA, :JUROS, :OUTROS, :DESCONTO

                                 );
        COD_ARRECADACAO = :COD_ARRECADACAO + 1;

        suspend;
    end

  execute statement 'SET GENERATOR GEN_ARRECADACAO TO ' || :COD_ARRECADACAO;
end^


ALTER PROCEDURE PROC_LISTA_ARRECADACAO (
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80))
RETURNS (
    COD_ARRECADACAO NUMERIC(15,0),
    COD_VINCULO_ARRECADACAO INTEGER,
    DATA_VENCIMENTO DATE,
    COMPETENCIA INTEGER,
    COMPLEMENTAR INTEGER,
    VALOR_A_PAGAR NUMERIC(15,2),
    DATA_PAGAMENTO DATE,
    VALOR_PAGAMENTO NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    SEU_NUMERO VARCHAR(30),
    DATA_EMISSAO DATE,
    COD_CONVENIO_COBRANCA INTEGER,
    DESCRICAO_CONVENIO_COBRANCA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER,
    DESCRICAO_TIPO_COBRANCA VARCHAR(80),
    COMPLEMENTOVALOR VARCHAR(5),
    ERRO_PROCESSAMENTO VARCHAR(80),
    NOSSO_NUMERO VARCHAR(30),
    VALOR_REPASSE_FEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_CONFEDERACAO NUMERIC(15,2),
    VALOR_REPASSE_OUTROS NUMERIC(15,2),
    VALOR_TARIFA NUMERIC(15,2),
    VALOR_MULTA NUMERIC(15,2),
    VALOR_JUROS NUMERIC(15,2),
    EXCLUIDA VARCHAR(1),
    OBS_PAGAMENTO VARCHAR(5000),
    OBS_OUTRAS VARCHAR(5000),
    HASH_CODE VARCHAR(80),
    DATA_CREDITO DATE,
    PADRAO_BANCARIO VARCHAR(80),
    GUIA_REGISTRADA VARCHAR(1),
    EXISTE_GUIA_VINCULADA VARCHAR(1),
    COD_COBRANCA_DETALHE INTEGER,
    COD_ACORDO INTEGER,
    LINHA_DIGITAVEL VARCHAR(70),
    CODIGO_DE_BARRAS VARCHAR(44))
AS
declare variable COD_TIPO_ERRO_PROCESSAMENTO integer;
declare variable COD_ESTORNO_CONCLUIDO integer;
declare variable WS_AUTENTICACAO varchar(80);
declare variable WS_COD_RETORNO varchar(10);
begin
  /*===========================================================================
    Esta procedure mostra as arrecadacaoes relacionadas aos clientes
  =============================================================================*/
  /*Seleciona o codigo do status do estorno que indica que o estorno esta concuido*/
  select coalesce(PARAMETRO.ESTORNO_STATUS_CONCLUIDO , 0)
  from PARAMETRO
  into :COD_ESTORNO_CONCLUIDO;


  for
     select ARRECADACAO.COD_ARRECADACAO
          , ARRECADACAO.DATA_VENCIMENTO
          , ARRECADACAO.COMPETENCIA
          , ARRECADACAO.COMPLEMENTAR
          , ARRECADACAO.VALOR_A_PAGAR
          , ARRECADACAO.DATA_PAGAMENTO
          , ARRECADACAO.VALOR_PAGAMENTO
          , ARRECADACAO.VALOR_CREDITADO
          , ARRECADACAO.SEU_NUMERO
          , ARRECADACAO.NOSSO_NUMERO
          , ARRECADACAO.DATA_EMISSAO
          , ARRECADACAO.VALOR_REPASSE_FEDERACAO
          , ARRECADACAO.VALOR_REPASSE_CONFEDERACAO
          , ARRECADACAO.VALOR_REPASSE_OUTROS

          , ARRECADACAO.VALOR_TARIFA
          , ARRECADACAO.VALOR_MULTA
          , ARRECADACAO.VALOR_JUROS

          , ARRECADACAO.COD_CONVENIO_COBRANCA
          , ARRECADACAO.EXCLUIDA
          , ARRECADACAO.OBS_PAGAMENTO
          , ARRECADACAO.OBS_OUTRAS
          , ARRECADACAO.COD_COBRANCA_DETALHE

          , CONVENIO_COBRANCA.DESCRICAO

          , TIPO_COBRANCA.COD_TIPO_COBRANCA
          , TIPO_COBRANCA.DESCRICAO


        , case
             when arrecadacao.COD_ARRECADACAO_COMP_VALOR is not null THEN '*'
             else ''
          end

        , ARRECADACAO.COD_TIPO_ERRO_PROCESSAMENTO
        , ARRECADACAO.HASH_CODE_LINHA_ARQ_RETORNO
        , ARRECADACAO.DATA_CREDITO

        , PADRAO_BANCARIO.DESCRICAO
        , ARRECADACAO.WS_AUTENTICACAO
        , ARRECADACAO.WS_COD_RETORNO
        , ARRECADACAO.LINHA_DIGITAVEL
        , ARRECADACAO.CODIGO_DE_BARRAS

      from ARRECADACAO
         inner join CONVENIO_COBRANCA ON CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = ARRECADACAO.COD_CONVENIO_COBRANCA
         inner join TIPO_COBRANCA     ON TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
         inner join PADRAO_BANCARIO   ON PADRAO_BANCARIO.COD_PADRAO_BANCARIO = ARRECADACAO.COD_PADRAO_BANCARIO
      where ARRECADACAO.TABELA_RELACIONADA = :TABELA_RELACIONADA
        and ARRECADACAO.COD_TABELA_RELACIONADA =:COD_TABELA_RELACIONADA
        and ( ARRECADACAO.excluida <> 'T' or ARRECADACAO.excluida is null)
   
      order by ARRECADACAO.DATA_VENCIMENTO desc

      into :COD_ARRECADACAO, :DATA_VENCIMENTO, :COMPETENCIA, :COMPLEMENTAR, :VALOR_A_PAGAR,
           :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_CREDITADO, :SEU_NUMERO, :NOSSO_NUMERO, :DATA_EMISSAO,
           :VALOR_REPASSE_FEDERACAO, :VALOR_REPASSE_CONFEDERACAO, :VALOR_REPASSE_OUTROS,
           :VALOR_TARIFA, :VALOR_MULTA, :VALOR_JUROS,
           :COD_CONVENIO_COBRANCA, :EXCLUIDA, :OBS_PAGAMENTO, :OBS_OUTRAS, :COD_COBRANCA_DETALHE, :DESCRICAO_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :DESCRICAO_TIPO_COBRANCA,
           :COMPLEMENTOVALOR, :COD_TIPO_ERRO_PROCESSAMENTO, :HASH_CODE, :DATA_CREDITO, :PADRAO_BANCARIO, :WS_AUTENTICACAO, :WS_COD_RETORNO,
           :LINHA_DIGITAVEL, :CODIGO_DE_BARRAS  do

   begin

         COD_VINCULO_ARRECADACAO = null;

         SELECT ARRECADACAO_DETALHE.COD_ARRECADACAO
         from ARRECADACAO_DETALHE
         where ARRECADACAO_DETALHE.COD_ARRECADACAO_VINCULADO = :COD_ARRECADACAO
         into :COD_VINCULO_ARRECADACAO;

         ERRO_PROCESSAMENTO = NULL;

         select first 1 'Guia Estornada'
         from estorno
            inner join ESTORNO_DETALHE on ESTORNO_DETALHE.COD_ESTORNO = ESTORNO.COD_ESTORNO
         where ESTORNO_DETALHE.COD_ARRECADACAO = :COD_ARRECADACAO
         into : ERRO_PROCESSAMENTO;

         select coalesce(TIPO_ERRO_PROCESSAMENTO_RETORNO.DESCRICAO, '')
         from TIPO_ERRO_PROCESSAMENTO_RETORNO
         where TIPO_ERRO_PROCESSAMENTO_RETORNO.COD_TIPO_ERRO_PROCESSAMENTO = :COD_TIPO_ERRO_PROCESSAMENTO
         into : ERRO_PROCESSAMENTO;

         /*=============== verifica se a guia esta registada ===================== */
         GUIA_REGISTRADA = 'F' ;
         if ((:WS_AUTENTICACAO <> '') and (WS_COD_RETORNO = 0 )) then
         begin
            GUIA_REGISTRADA = 'T';
         end

         /*=========== verifica se a guia possui outras guias vinculadas..============*/
         EXISTE_GUIA_VINCULADA = 'F' ;

         select first 1 'T'
         from ARRECADACAO_DETALHE
         where ARRECADACAO_DETALHE.COD_ARRECADACAO = :COD_ARRECADACAO
         into :EXISTE_GUIA_VINCULADA;

        /*=================== verifica se a guia esta em algum acordo de cobranca ============= */
        COD_ACORDO = NULL;
        select ACORDO_DETALHE.COD_ACORDO
        from ACORDO_DETALHE
        where ACORDO_DETALHE.COD_ARRECADACAO = :COD_ARRECADACAO
        into :COD_ACORDO;




      suspend;
   end

   /*===============================================
       OS associados tb possuem debitos de servicos de convenios
       neste caso lista todos tb estes debitos na tela dos cadastro de associado
    ==================================================*/
   if (:TABELA_RELACIONADA = 'ASSOCIADO') then
   begin
     for
        select ARRECADACAO.COD_ARRECADACAO
             , ARRECADACAO.DATA_VENCIMENTO
             , ARRECADACAO.COMPETENCIA
             , ARRECADACAO.COMPLEMENTAR
             , ARRECADACAO.VALOR_A_PAGAR
             , ARRECADACAO.DATA_PAGAMENTO
             , ARRECADACAO.VALOR_PAGAMENTO
             , ARRECADACAO.VALOR_CREDITADO
             , ARRECADACAO.SEU_NUMERO
             , ARRECADACAO.NOSSO_NUMERO
             , ARRECADACAO.DATA_EMISSAO
             , ARRECADACAO.VALOR_REPASSE_FEDERACAO
             , ARRECADACAO.VALOR_REPASSE_CONFEDERACAO
             , ARRECADACAO.VALOR_REPASSE_OUTROS
   
             , ARRECADACAO.VALOR_TARIFA
             , ARRECADACAO.VALOR_MULTA
             , ARRECADACAO.VALOR_JUROS
   
             , ARRECADACAO.COD_CONVENIO_COBRANCA
             , ARRECADACAO.EXCLUIDA
             , ARRECADACAO.OBS_PAGAMENTO
             , ARRECADACAO.OBS_OUTRAS
             , CONVENIO_COBRANCA.DESCRICAO
   
             , TIPO_COBRANCA.COD_TIPO_COBRANCA
             , TIPO_COBRANCA.DESCRICAO
   
   
           , case
                when arrecadacao.COD_ARRECADACAO_COMP_VALOR is not null THEN '*'
                else ''
             end
   
           , ARRECADACAO.COD_TIPO_ERRO_PROCESSAMENTO
           , ARRECADACAO.HASH_CODE_LINHA_ARQ_RETORNO
           , ARRECADACAO.DATA_CREDITO
   
           , PADRAO_BANCARIO.DESCRICAO
   
   
         from ARRECADACAO
            inner join CONVENIO_COBRANCA ON CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = ARRECADACAO.COD_CONVENIO_COBRANCA
            inner join TIPO_COBRANCA     ON TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
            inner join PADRAO_BANCARIO   ON PADRAO_BANCARIO.COD_PADRAO_BANCARIO = ARRECADACAO.COD_PADRAO_BANCARIO
            inner join LANCAMENTOS_SERVICOS on LANCAMENTOS_SERVICOS.CODIGO = ARRECADACAO.COD_TABELA_RELACIONADA
   
         where  LANCAMENTOS_SERVICOS.COD_ASSOCIADO = :COD_TABELA_RELACIONADA
            and ( ARRECADACAO.excluida <> 'T' or ARRECADACAO.excluida is null)
            and arrecadacao.tabela_relacionada = 'LANCAMENTOS_SERVICOS'
      
         order by ARRECADACAO.DATA_VENCIMENTO desc
   
         into :COD_ARRECADACAO, :DATA_VENCIMENTO, :COMPETENCIA, :COMPLEMENTAR, :VALOR_A_PAGAR,
              :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_CREDITADO, :SEU_NUMERO, :NOSSO_NUMERO, :DATA_EMISSAO,
              :VALOR_REPASSE_FEDERACAO, :VALOR_REPASSE_CONFEDERACAO, :VALOR_REPASSE_OUTROS,
              :VALOR_TARIFA, :VALOR_MULTA, :VALOR_JUROS,
              :COD_CONVENIO_COBRANCA, :EXCLUIDA, :OBS_PAGAMENTO, :OBS_OUTRAS,  :DESCRICAO_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :DESCRICAO_TIPO_COBRANCA,
              :COMPLEMENTOVALOR, :COD_TIPO_ERRO_PROCESSAMENTO, :HASH_CODE, :DATA_CREDITO, :PADRAO_BANCARIO do
      begin
         SUSPEND;
      end
   end



   /*===============================================
       OS comerciarios tb possuem debitos de servicos de convenios
       neste caso lista todos tb estes debitos na tela dos cadastro do comerciario
    ==================================================*/
   if (:TABELA_RELACIONADA = 'COMERCIARIO') then
   begin
     for
        select ARRECADACAO.COD_ARRECADACAO
             , ARRECADACAO.DATA_VENCIMENTO
             , ARRECADACAO.COMPETENCIA
             , ARRECADACAO.COMPLEMENTAR
             , ARRECADACAO.VALOR_A_PAGAR
             , ARRECADACAO.DATA_PAGAMENTO
             , ARRECADACAO.VALOR_PAGAMENTO
             , ARRECADACAO.VALOR_CREDITADO
             , ARRECADACAO.SEU_NUMERO
             , ARRECADACAO.NOSSO_NUMERO
             , ARRECADACAO.DATA_EMISSAO
             , ARRECADACAO.VALOR_REPASSE_FEDERACAO
             , ARRECADACAO.VALOR_REPASSE_CONFEDERACAO
             , ARRECADACAO.VALOR_REPASSE_OUTROS
   
             , ARRECADACAO.VALOR_TARIFA
             , ARRECADACAO.VALOR_MULTA
             , ARRECADACAO.VALOR_JUROS
   
             , ARRECADACAO.COD_CONVENIO_COBRANCA
             , ARRECADACAO.EXCLUIDA
             , ARRECADACAO.OBS_PAGAMENTO
             , ARRECADACAO.OBS_OUTRAS
             , CONVENIO_COBRANCA.DESCRICAO
   
             , TIPO_COBRANCA.COD_TIPO_COBRANCA
             , TIPO_COBRANCA.DESCRICAO
   
   
           , case
                when arrecadacao.COD_ARRECADACAO_COMP_VALOR is not null THEN '*'
                else ''
             end
   
           , ARRECADACAO.COD_TIPO_ERRO_PROCESSAMENTO
           , ARRECADACAO.HASH_CODE_LINHA_ARQ_RETORNO
           , ARRECADACAO.DATA_CREDITO
   
           , PADRAO_BANCARIO.DESCRICAO
   
   
         from ARRECADACAO
            inner join CONVENIO_COBRANCA ON CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = ARRECADACAO.COD_CONVENIO_COBRANCA
            inner join TIPO_COBRANCA     ON TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
            inner join PADRAO_BANCARIO   ON PADRAO_BANCARIO.COD_PADRAO_BANCARIO = ARRECADACAO.COD_PADRAO_BANCARIO
            inner join LANCAMENTOS_SERVICOS_GENERICO ON LANCAMENTOS_SERVICOS_GENERICO.CODIGO = ARRECADACAO.COD_TABELA_RELACIONADA
   
         where  LANCAMENTOS_SERVICOS_GENERICO.COD_COMERCIARIO = :COD_TABELA_RELACIONADA
            and ( ARRECADACAO.excluida <> 'T' or ARRECADACAO.excluida is null)
            and arrecadacao.tabela_relacionada = 'LANCAMENTOS_SERVICOS_GENERICO'
      
         order by ARRECADACAO.DATA_VENCIMENTO desc
   
         into :COD_ARRECADACAO, :DATA_VENCIMENTO, :COMPETENCIA, :COMPLEMENTAR, :VALOR_A_PAGAR,
              :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_CREDITADO, :SEU_NUMERO, :NOSSO_NUMERO, :DATA_EMISSAO,
              :VALOR_REPASSE_FEDERACAO, :VALOR_REPASSE_CONFEDERACAO, :VALOR_REPASSE_OUTROS,
              :VALOR_TARIFA, :VALOR_MULTA, :VALOR_JUROS,
              :COD_CONVENIO_COBRANCA, :EXCLUIDA, :OBS_PAGAMENTO, :OBS_OUTRAS,  :DESCRICAO_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :DESCRICAO_TIPO_COBRANCA,
              :COMPLEMENTOVALOR, :COD_TIPO_ERRO_PROCESSAMENTO, :HASH_CODE, :DATA_CREDITO, :PADRAO_BANCARIO do
      begin
         SUSPEND;
      end
   end
   /*===============================================
       Listar cobran?as
    ==================================================*/
   if (:TABELA_RELACIONADA = 'COBRANCA') then
   begin
     for
        select ARRECADACAO.COD_ARRECADACAO
             , ARRECADACAO.DATA_VENCIMENTO
             , ARRECADACAO.COMPETENCIA
             , ARRECADACAO.COMPLEMENTAR
             , ARRECADACAO.VALOR_A_PAGAR
             , ARRECADACAO.DATA_PAGAMENTO
             , ARRECADACAO.VALOR_PAGAMENTO
             , ARRECADACAO.VALOR_CREDITADO
             , ARRECADACAO.SEU_NUMERO
             , ARRECADACAO.NOSSO_NUMERO
             , ARRECADACAO.DATA_EMISSAO
             , ARRECADACAO.VALOR_REPASSE_FEDERACAO
             , ARRECADACAO.VALOR_REPASSE_CONFEDERACAO
             , ARRECADACAO.VALOR_REPASSE_OUTROS
   
             , ARRECADACAO.VALOR_TARIFA
             , ARRECADACAO.VALOR_MULTA
             , ARRECADACAO.VALOR_JUROS
   
             , ARRECADACAO.COD_CONVENIO_COBRANCA
             , ARRECADACAO.EXCLUIDA
             , ARRECADACAO.OBS_PAGAMENTO
             , ARRECADACAO.OBS_OUTRAS
             , CONVENIO_COBRANCA.DESCRICAO
   
             , TIPO_COBRANCA.COD_TIPO_COBRANCA
             , TIPO_COBRANCA.DESCRICAO
   
   
           , case
                when arrecadacao.COD_ARRECADACAO_COMP_VALOR is not null THEN '*'
                else ''
             end
   
           , ARRECADACAO.COD_TIPO_ERRO_PROCESSAMENTO
           , ARRECADACAO.HASH_CODE_LINHA_ARQ_RETORNO
           , ARRECADACAO.DATA_CREDITO
   
           , PADRAO_BANCARIO.DESCRICAO
   
   
         from ARRECADACAO
            inner join CONVENIO_COBRANCA ON CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = ARRECADACAO.COD_CONVENIO_COBRANCA
            inner join TIPO_COBRANCA     ON TIPO_COBRANCA.COD_TIPO_COBRANCA = ARRECADACAO.COD_TIPO_COBRANCA
            inner join PADRAO_BANCARIO   ON PADRAO_BANCARIO.COD_PADRAO_BANCARIO = ARRECADACAO.COD_PADRAO_BANCARIO
            inner join cobranca_detalhe  ON cobranca_detalhe.cod_arrecadacao = arrecadacao.cod_arrecadacao
            inner join COBRANCA          ON COBRANCA.cod_cobranca = cobranca_detalhe.cod_cobranca
   
         where  cobranca.cod_cobranca = :COD_TABELA_RELACIONADA
            and ( ARRECADACAO.excluida <> 'T' or ARRECADACAO.excluida is null)

      
         order by ARRECADACAO.DATA_VENCIMENTO desc

         into :COD_ARRECADACAO, :DATA_VENCIMENTO, :COMPETENCIA, :COMPLEMENTAR, :VALOR_A_PAGAR,
              :DATA_PAGAMENTO, :VALOR_PAGAMENTO, :VALOR_CREDITADO, :SEU_NUMERO, :NOSSO_NUMERO, :DATA_EMISSAO,
              :VALOR_REPASSE_FEDERACAO, :VALOR_REPASSE_CONFEDERACAO, :VALOR_REPASSE_OUTROS,
              :VALOR_TARIFA, :VALOR_MULTA, :VALOR_JUROS,
              :COD_CONVENIO_COBRANCA, :EXCLUIDA, :OBS_PAGAMENTO, :OBS_OUTRAS,  :DESCRICAO_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :DESCRICAO_TIPO_COBRANCA,
              :COMPLEMENTOVALOR, :COD_TIPO_ERRO_PROCESSAMENTO, :HASH_CODE, :DATA_CREDITO, :PADRAO_BANCARIO do
      begin
                /*=================== verifica se a guia esta em algum acordo de cobranca ============= */
        COD_ACORDO = NULL;
        select ACORDO_DETALHE.COD_ACORDO
        from ACORDO_DETALHE
        where ACORDO_DETALHE.COD_ARRECADACAO = :COD_ARRECADACAO
        into :COD_ACORDO;

         SUSPEND;
      end
   end

end^


ALTER PROCEDURE PROC_LOCALIZA_ENTIDADE (
    COD_SINDICAL VARCHAR(20),
    GRAU_ENTIDADE VARCHAR(80),
    CNPJ VARCHAR(14))
RETURNS (
    RAZAO_SOCIAL VARCHAR(200),
    COD_ENTIDADE_SINDICAL INTEGER)
AS
declare variable FEDERACAO varchar(20);
declare variable CONFEDERACAO varchar(20);
declare variable CENTRAL_SINDICAL varchar(20);
declare variable SINDICATO varchar(20);
begin

  central_sindical = substring(:COD_SINDICAL from 1 for 3) ;
  confederacao     = substring(:COD_SINDICAL from 4 for 3);
  federacao        = substring(:COD_SINDICAL from 7 for 3);
  sindicato        = substring(:COD_SINDICAL from 10 for 5);

    /*============= busca central sindical ============ */
 if (GRAU_ENTIDADE = 'CENTRAL') then
 begin
      FOR
         select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
               , ENTIDADE_SINDICAL.RAZAOSOCIAL
         from ENTIDADE_SINDICAL
         where :GRAU_ENTIDADE = ENTIDADE_SINDICAL.grau_entidade AND  :central_sindical = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 1 FOR 3)
         into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL DO
      begin
         suspend;
      end
 end
 else
 if (GRAU_ENTIDADE = 'CONFEDERAÇÃO') then
 begin
      FOR
         select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
               , ENTIDADE_SINDICAL.RAZAOSOCIAL
         from ENTIDADE_SINDICAL
         where :GRAU_ENTIDADE = ENTIDADE_SINDICAL.grau_entidade AND :confederacao = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 4 FOR 3)
         into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL DO
      begin
         suspend;
      end
 end
 else
 if (GRAU_ENTIDADE = 'FEDERAÇÃO') then
 begin
      FOR
         select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
               , ENTIDADE_SINDICAL.RAZAOSOCIAL
         from ENTIDADE_SINDICAL
         where :GRAU_ENTIDADE = ENTIDADE_SINDICAL.grau_entidade AND :federacao = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 7 FOR 3)
         into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL DO
      begin
         suspend;
      end
 end
 else
 begin
      FOR
         select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
               , ENTIDADE_SINDICAL.RAZAOSOCIAL
         from ENTIDADE_SINDICAL
         where :GRAU_ENTIDADE = ENTIDADE_SINDICAL.grau_entidade AND :sindicato = SUBSTRING( ENTIDADE_SINDICAL.CODIGO_SINDICAL FROM 10 FOR 5)
         into :COD_ENTIDADE_SINDICAL , :RAZAO_SOCIAL DO
      begin
         suspend;
      end
 end
 end^


ALTER PROCEDURE PROC_LOCALIZA_GUIAS_DA_WEB (
    COD_BARRA VARCHAR(44),
    CODIGO_CONVENIO_COBRANCA INTEGER,
    SEU_NUMERO VARCHAR(30),
    GUIA_VENCIMENTO DATE,
    GUIA_VALOR NUMERIC(15,2),
    CODIGO BIGINT)
RETURNS (
    CODIGO_CHAVE BIGINT,
    DATA_GERACAO DATE,
    DATA_VENCIMENTO DATE,
    VALOR NUMERIC(15,2),
    SEU_NUM VARCHAR(30),
    NOSSO_NUM VARCHAR(80),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAOSOCIAL VARCHAR(200),
    COMPETENCIA SMALLINT,
    COMPLEMENTAR SMALLINT,
    COD_GUIA_NA_WEB INTEGER,
    COD_CONVENIO_COBRANCA INTEGER,
    QUANTIDADE_GUIAS INTEGER,
    TIPO_GUIA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    CONVENIO_COBRANCA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER,
    CODIGO_BARRA VARCHAR(44),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF VARCHAR(2),
    ENDERECO_CEP VARCHAR(8),
    CNAE VARCHAR(20),
    OBSERVACAO VARCHAR(1000))
AS
declare variable QTD_ENCONTRADA integer;
declare variable CNPJ_SECODERCO varchar(14);
declare variable COD_CHAVE_DO_SEU_NUM integer;
begin
   QUANTIDADE_GUIAS = 0;

   if ( (CODIGO > 0 )  and (CODIGO is not null) )then
   begin
      for
         SELECT GUIAS_DA_WEB.CODIGO
              , GUIAS_DA_WEB.CNPJ
              , GUIAS_DA_WEB.DATA_GERACAO
              , GUIAS_DA_WEB.DATA_VENCIMENTO
              , GUIAS_DA_WEB.SEU_NUMERO
              , GUIAS_DA_WEB.NOSSO_NUMERO
              , GUIAS_DA_WEB.VALOR
              , GUIAS_DA_WEB.COMPETENCIA
              , GUIAS_DA_WEB.COMPLEMENTAR
              , GUIAS_DA_WEB.TIPO
              , GUIAS_DA_WEB.CODIGO_GUIA_NA_WEB
              , GUIAS_DA_WEB.COD_CONVENIO_COBRANCA
              , guias_da_web.cod_tipo_cobranca
              , guias_da_web.COD_BARRA
              , guias_da_web.OBSERVACAO

            from GUIAS_DA_WEB
            where guias_da_web.CODIGO = :CODIGO

            into :CODIGO_CHAVE, :CPF_CNPJ, :DATA_GERACAO, :DATA_VENCIMENTO, :SEU_NUM, :NOSSO_NUM, :VALOR, :COMPETENCIA,
                 :COMPLEMENTAR, :TIPO_GUIA, :COD_GUIA_NA_WEB, :COD_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA,
                 :CODIGO_BARRA, :OBSERVACAO do
         begin
   
             /*=============== verifica em qual tabela esta cadastrado o cnpj/ cpf =============*/
             COD_TABELA_RELACIONADA = null;
             TABELA_RELACIONADA     = null;
   
             select :CPF_CNPJ
                  , PROC_TABELA_RELACIONADA.TABELA_RELACIONADA
                  , PROC_TABELA_RELACIONADA.NOME_RAZAOSOCIAL
                  , PROC_TABELA_RELACIONADA.ENDERECO_LOGRADOURO
                  , PROC_TABELA_RELACIONADA.ENDERECO_NUMERO
                  , PROC_TABELA_RELACIONADA.ENDERECO_COMPLEMENTO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_BAIRRO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CIDADE 
                  , PROC_TABELA_RELACIONADA.ENDERECO_UF 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CEP 
                  , PROC_TABELA_RELACIONADA.CNAE

             from PROC_TABELA_RELACIONADA(:CPF_CNPJ)
             into :cod_tabela_relacionada, :tabela_relacionada, :NOME_RAZAOSOCIAL,
                  :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO , :ENDERECO_BAIRRO,
                  :ENDERECO_CIDADE , :ENDERECO_UF , :ENDERECO_CEP, :CNAE ;

              select CONVENIO_COBRANCA.DESCRICAO
              from CONVENIO_COBRANCA
              where CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = :COD_CONVENIO_COBRANCA
              into :CONVENIO_COBRANCA;

   
            suspend;
            exit;
         end
   end

   /*=========== tenta localizar a guia pelo codigo de barras =============*/
   if ( (COD_BARRA <> '') and (COD_BARRA is not null)) then
   begin
      for
         SELECT GUIAS_DA_WEB.CODIGO
              , GUIAS_DA_WEB.CNPJ
              , GUIAS_DA_WEB.DATA_GERACAO
              , GUIAS_DA_WEB.DATA_VENCIMENTO
              , GUIAS_DA_WEB.SEU_NUMERO
              , GUIAS_DA_WEB.NOSSO_NUMERO
              , GUIAS_DA_WEB.VALOR
              , GUIAS_DA_WEB.COMPETENCIA
              , GUIAS_DA_WEB.COMPLEMENTAR
              , GUIAS_DA_WEB.TIPO
              , GUIAS_DA_WEB.CODIGO_GUIA_NA_WEB
              , GUIAS_DA_WEB.COD_CONVENIO_COBRANCA
              , guias_da_web.cod_tipo_cobranca
              , guias_da_web.OBSERVACAO
            from GUIAS_DA_WEB
            where guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
              and GUIAS_DA_WEB.COD_BARRA = :COD_BARRA

            into :CODIGO_CHAVE, :CPF_CNPJ, :DATA_GERACAO, :DATA_VENCIMENTO, :SEU_NUM, :NOSSO_NUM, :VALOR, :COMPETENCIA,
                 :COMPLEMENTAR, :TIPO_GUIA, :COD_GUIA_NA_WEB, :COD_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :OBSERVACAO do
         begin
   
             /*=============== verifica em qual tabela esta cadastrado o cnpj/ cpf =============*/
             COD_TABELA_RELACIONADA = null;
             TABELA_RELACIONADA     = null;
   
             select :CPF_CNPJ
                  , PROC_TABELA_RELACIONADA.TABELA_RELACIONADA
                  , PROC_TABELA_RELACIONADA.NOME_RAZAOSOCIAL
                  , PROC_TABELA_RELACIONADA.ENDERECO_LOGRADOURO
                  , PROC_TABELA_RELACIONADA.ENDERECO_NUMERO
                  , PROC_TABELA_RELACIONADA.ENDERECO_COMPLEMENTO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_BAIRRO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CIDADE 
                  , PROC_TABELA_RELACIONADA.ENDERECO_UF 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CEP 
                  , PROC_TABELA_RELACIONADA.CNAE
             from PROC_TABELA_RELACIONADA(:CPF_CNPJ)
             into :cod_tabela_relacionada, :tabela_relacionada,:NOME_RAZAOSOCIAL,
                  :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO , :ENDERECO_BAIRRO,
                  :ENDERECO_CIDADE , :ENDERECO_UF , :ENDERECO_CEP, :CNAE ;
   
            suspend;
            exit;
         end
   end

   select count (GUIAS_DA_WEB.SEU_NUMERO)
   from GUIAS_DA_WEB
      where guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
        and ( GUIAS_DA_WEB.SEU_NUMERO = :SEU_NUMERO or GUIAS_DA_WEB.NOSSO_NUMERO= :SEU_NUMERO )

   into :QUANTIDADE_GUIAS;

   if (QUANTIDADE_GUIAS > 0 ) then
   begin
       /*========= Seleciona a descricao do convenio de cobranca ===========*/
      select CONVENIO_COBRANCA.DESCRICAO
      from CONVENIO_COBRANCA
      where CONVENIO_COBRANCA.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
      into :CONVENIO_COBRANCA;

      /*========================================================
         estavamos tendo um poblema para localziar as guias da web em alguns sindicato
         ex: Poços Hoteleiros...
         Qdo a guia é gerada pela web o valor pode ser alterado e o sistema pode nao conseguir localizar a guia
         EX: A pessoa gera a guia 1 com valor de 100,00 Venc 01/01/2016
             A pessoa gera a guia 2 com valor de 135,00 Venci 01/01/2016

             so fica registrado a ultima guia gerada, mas ela pde pagar a guia 1 e se o sistema tentar localizar
             pelo vecimento e valor nao vai encontra-la
      ==========================================================*/

       /*============ verifica qta guia sao encotnradas sem informar o valor do documento =========*/
      select count(GUIAS_DA_WEB.CNPJ)
      from GUIAS_DA_WEB
      where guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
        and ( GUIAS_DA_WEB.SEU_NUMERO = :SEU_NUMERO or GUIAS_DA_WEB.NOSSO_NUMERO= :SEU_NUMERO )
        AND guias_da_web.data_vencimento =:guia_vencimento
      into :QTD_ENCONTRADA;

       /*============== Se encontrar apenas uma guia nao olha para o valor =============*/
      if (QTD_ENCONTRADA = 1 ) then
      begin
         for
            SELECT GUIAS_DA_WEB.CODIGO
                 , GUIAS_DA_WEB.CNPJ
                 , GUIAS_DA_WEB.DATA_GERACAO
                 , GUIAS_DA_WEB.DATA_VENCIMENTO
                 , GUIAS_DA_WEB.SEU_NUMERO
                 , GUIAS_DA_WEB.NOSSO_NUMERO
                 , GUIAS_DA_WEB.VALOR
                 , GUIAS_DA_WEB.COMPETENCIA
                 , GUIAS_DA_WEB.COMPLEMENTAR
                 , GUIAS_DA_WEB.TIPO
                 , GUIAS_DA_WEB.CODIGO_GUIA_NA_WEB
                 , GUIAS_DA_WEB.COD_CONVENIO_COBRANCA
                 , guias_da_web.cod_tipo_cobranca
                 , guias_da_web.COD_BARRA
                 , guias_da_web.OBSERVACAO

            from GUIAS_DA_WEB
            where guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
              and ( GUIAS_DA_WEB.SEU_NUMERO = :SEU_NUMERO or GUIAS_DA_WEB.NOSSO_NUMERO= :SEU_NUMERO )
              AND guias_da_web.data_vencimento =:guia_vencimento
         
            into :CODIGO_CHAVE, :CPF_CNPJ, :DATA_GERACAO, :DATA_VENCIMENTO, :SEU_NUM, :NOSSO_NUM, :VALOR, :COMPETENCIA,
                 :COMPLEMENTAR, :TIPO_GUIA, :COD_GUIA_NA_WEB, :COD_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :CODIGO_BARRA, :OBSERVACAO do
         begin
   
             /*=============== verifica em qual tabela esta cadastrado o cnpj/ cpf =============*/
             COD_TABELA_RELACIONADA = null;
             TABELA_RELACIONADA     = null;
   
             select :CPF_CNPJ
                  , PROC_TABELA_RELACIONADA.TABELA_RELACIONADA
                  , PROC_TABELA_RELACIONADA.NOME_RAZAOSOCIAL
                  , PROC_TABELA_RELACIONADA.ENDERECO_LOGRADOURO
                  , PROC_TABELA_RELACIONADA.ENDERECO_NUMERO
                  , PROC_TABELA_RELACIONADA.ENDERECO_COMPLEMENTO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_BAIRRO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CIDADE 
                  , PROC_TABELA_RELACIONADA.ENDERECO_UF 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CEP 
                  , PROC_TABELA_RELACIONADA.CNAE
             from PROC_TABELA_RELACIONADA(:CPF_CNPJ)
             into :cod_tabela_relacionada, :tabela_relacionada,:NOME_RAZAOSOCIAL,
                  :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO , :ENDERECO_BAIRRO,
                  :ENDERECO_CIDADE , :ENDERECO_UF , :ENDERECO_CEP , :CNAE ;
   
            suspend;
         end
      end

      /*============ se encontou mais de uma guia passa paramentro do valor para tentar filtrar mais os resultado ======*/
      if (QTD_ENCONTRADA > 1 ) then
      begin
         for
            SELECT GUIAS_DA_WEB.CODIGO
                 , GUIAS_DA_WEB.CNPJ
                 , GUIAS_DA_WEB.DATA_GERACAO
                 , GUIAS_DA_WEB.DATA_VENCIMENTO
                 , GUIAS_DA_WEB.SEU_NUMERO
                 , GUIAS_DA_WEB.NOSSO_NUMERO
                 , GUIAS_DA_WEB.VALOR
                 , GUIAS_DA_WEB.COMPETENCIA
                 , GUIAS_DA_WEB.COMPLEMENTAR
                 , GUIAS_DA_WEB.TIPO
                 , GUIAS_DA_WEB.CODIGO_GUIA_NA_WEB
                 , GUIAS_DA_WEB.COD_CONVENIO_COBRANCA
                 , guias_da_web.cod_tipo_cobranca
                 , GUIAS_DA_WEB.COD_BARRA
                 , GUIAS_DA_WEB.OBSERVACAO
      
            from GUIAS_DA_WEB
            where guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
              and ( GUIAS_DA_WEB.SEU_NUMERO = :SEU_NUMERO or GUIAS_DA_WEB.NOSSO_NUMERO= :SEU_NUMERO )
              AND guias_da_web.data_vencimento =:guia_vencimento
              AND guias_da_web.valor =:guia_VALOR
         
            into :CODIGO_CHAVE, :CPF_CNPJ, :DATA_GERACAO, :DATA_VENCIMENTO, :SEU_NUM, :NOSSO_NUM, :VALOR, :COMPETENCIA,
                 :COMPLEMENTAR, :TIPO_GUIA, :COD_GUIA_NA_WEB, :COD_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :CODIGO_BARRA, :OBSERVACAO do
         begin
   
             /*=============== verifica em qual tabela esta cadastrado o cnpj/ cpf =============*/
             COD_TABELA_RELACIONADA = null;
             TABELA_RELACIONADA     = null;
   
             select :CPF_CNPJ
                  , PROC_TABELA_RELACIONADA.TABELA_RELACIONADA
                  , PROC_TABELA_RELACIONADA.NOME_RAZAOSOCIAL
                  , PROC_TABELA_RELACIONADA.ENDERECO_LOGRADOURO
                  , PROC_TABELA_RELACIONADA.ENDERECO_NUMERO
                  , PROC_TABELA_RELACIONADA.ENDERECO_COMPLEMENTO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_BAIRRO 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CIDADE 
                  , PROC_TABELA_RELACIONADA.ENDERECO_UF 
                  , PROC_TABELA_RELACIONADA.ENDERECO_CEP 
                  , PROC_TABELA_RELACIONADA.CNAE
             from PROC_TABELA_RELACIONADA(:CPF_CNPJ)
             into :cod_tabela_relacionada, :tabela_relacionada,:NOME_RAZAOSOCIAL ,
                  :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO , :ENDERECO_BAIRRO,
                  :ENDERECO_CIDADE , :ENDERECO_UF , :ENDERECO_CEP, :CNAE ;
   
            suspend;
         end
      end
   end

  /*===================================================
     SOMENTE PARA O SECODERCO: Varias guias da web foram geradas sem grava o campo nosso numero na tabela Mysql
     para resolver temos q pegar o codigo chave da tabela que vem no seu numero e localizar a guia da web
  =====================================================*/
   if (:QUANTIDADE_GUIAS = 0 ) then
   begin
      SELECT REGISTRO.CNPJ
      from REGISTRO
      into :CNPJ_SECODERCO;

      if ( (:CNPJ_SECODERCO = '16763526000163') and (CHAR_LENGTH (SEU_NUMERO) > 12 )) then
      begin
         COD_CHAVE_DO_SEU_NUM = SUBSTRING(:SEU_NUMERO from 12 for 6);

         for
         SELECT GUIAS_DA_WEB.CNPJ
              , GUIAS_DA_WEB.DATA_GERACAO
              , GUIAS_DA_WEB.DATA_VENCIMENTO
              , GUIAS_DA_WEB.SEU_NUMERO
              , GUIAS_DA_WEB.NOSSO_NUMERO
              , GUIAS_DA_WEB.VALOR
              , GUIAS_DA_WEB.COMPETENCIA
              , GUIAS_DA_WEB.COMPLEMENTAR
              , GUIAS_DA_WEB.TIPO
              , GUIAS_DA_WEB.CODIGO_GUIA_NA_WEB
              , GUIAS_DA_WEB.COD_CONVENIO_COBRANCA
              , guias_da_web.cod_tipo_cobranca
              , guias_da_web.OBSERVACAO
   
         from GUIAS_DA_WEB
         where guias_da_web.CODIGO_GUIA_NA_WEB = :COD_CHAVE_DO_SEU_NUM
           and guias_da_web.COD_CONVENIO_COBRANCA = :CODIGO_CONVENIO_COBRANCA
      
         into :CPF_CNPJ, :DATA_GERACAO, :DATA_VENCIMENTO, :SEU_NUM, :NOSSO_NUM, :VALOR, :COMPETENCIA,
              :COMPLEMENTAR, :TIPO_GUIA, :COD_GUIA_NA_WEB, :COD_CONVENIO_COBRANCA, :COD_TIPO_COBRANCA, :OBSERVACAO do
         begin
             /*=============== verifica em qual tabela esta cadastrado o cnpj/ cpf =============*/
             COD_TABELA_RELACIONADA = null;
             TABELA_RELACIONADA     = null;
   
             select :CPF_CNPJ
                  , PROC_TABELA_RELACIONADA.TABELA_RELACIONADA
                  , PROC_TABELA_RELACIONADA.NOME_RAZAOSOCIAL
             from PROC_TABELA_RELACIONADA(:CPF_CNPJ)
             into :cod_tabela_relacionada, :tabela_relacionada,:NOME_RAZAOSOCIAL ;

           suspend;
         end

      end
   end
end^


ALTER PROCEDURE PROC_MAIOR_DATA (
    DATA1 DATE,
    DATA2 DATE,
    DATA3 DATE)
RETURNS (
    DATA_MAIOR DATE)
AS
begin

   if (data1 is null) then
     data1 = '01.01.1888';

   if (data2 is null) then
     data2 = '01.01.1888';

   if (data3 is null) then
     data3 = '01.01.1888';


   if ( (data1 >= data2) and (data1 >= data3) ) then
      DATA_MAIOR = data1;

   if ( (data2 >= data1) and (data2 >= data3) ) then
      DATA_MAIOR = data2;

   if ( (data3 >= data1) and (data3 >= data2) ) then
      DATA_MAIOR = data3;

   if (DATA_MAIOR = '01.01.1888') then
      DATA_MAIOR = null;

  suspend;
end^


ALTER PROCEDURE PROC_RELAT_ATENDIMENTO
RETURNS (
    ATENDIMENTO OBSERVACAO,
    TEMPO TIME,
    FIM TIME,
    INICIO TIME,
    COD_STATUS CODIGO,
    TIPO_ATENDIMENTO_DESC DESCRICAO,
    TIPO_ATENDIMENTO_COD CODIGO,
    USUARIO_DESC DESCRICAO,
    USUARIO_COD CODIGO,
    HORA TIME,
    DATA DATE,
    LINK_CODIGO CHAVE_STR,
    LINK_DESCRICAO DESCRICAO,
    COD_ATENDIMENTO CODIGO,
    TABELA_RELACIONADA DESCRICAO)
AS
begin
    /*=================================
       ATENDIMENTOS EMPRESAS
    =================================*/
    for
    select
        atendimento_empresa.codigo,
        atendimento_empresa.empresa,
        empresa.razaosocial,
        atendimento_empresa.data,
        atendimento_empresa.hora,
        atendimento_empresa.usuario,
        usuario.nome,
        atendimento_empresa.tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_empresa.cod_status,
        atendimento_empresa.inicio_atendimento,
        atendimento_empresa.fim_atendimento,
        atendimento_empresa.tempo_atendimento,
        atendimento_empresa.descricao
    from atendimento_empresa
    inner join usuario on (atendimento_empresa.usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_empresa.tipo_atendimento = tipo_atendimento.codigo)
    inner join empresa on (atendimento_empresa.empresa = empresa.cnpj)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin
      TABELA_RELACIONADA= 'EMPRESA';

      suspend;
   end

    /*=================================
       ATENDIMENTOS CLIENTES PROCESSOS
    =================================*/
   for
    select
        atendimento_clientes_processos.codigo,
        atendimento_clientes_processos.cod_cliente_processo,
        clientes_processos.nome,
        atendimento_clientes_processos.data,
        atendimento_clientes_processos.hora,
        atendimento_clientes_processos.usuario,
        usuario.nome,
        atendimento_clientes_processos.tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_clientes_processos.cod_status,
        atendimento_clientes_processos.inicio_atendimento,
        atendimento_clientes_processos.fim_atendimento,
        atendimento_clientes_processos.tempo_atendimento,
        atendimento_clientes_processos.descricao
    from atendimento_clientes_processos
    inner join usuario on (atendimento_clientes_processos.usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_clientes_processos.tipo_atendimento = tipo_atendimento.codigo)
    inner join clientes_processos on (atendimento_clientes_processos.cod_cliente_processo = clientes_processos.cod_cliente_processo)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin

      TABELA_RELACIONADA= 'CLIENTES_PROCESSOS';

      suspend;
   end

    /*=================================
       ATENDIMENTOS COMERCIÁRIOS
    =================================*/
      for
    select
        atendimento_comerciario.codigo,
        atendimento_comerciario.cod_comerciario,
        comerciario.nome,
        atendimento_comerciario.data,
        atendimento_comerciario.hora,
        atendimento_comerciario.usuario,
        usuario.nome,
        atendimento_comerciario.tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_comerciario.cod_status,
        atendimento_comerciario.inicio_atendimento,
        atendimento_comerciario.fim_atendimento,
        atendimento_comerciario.tempo_atendimento,
        atendimento_comerciario.descricao
    from atendimento_comerciario
    inner join usuario on (atendimento_comerciario.usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_comerciario.tipo_atendimento = tipo_atendimento.codigo)
    inner join comerciario on (atendimento_comerciario.cod_comerciario = comerciario.codigo)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin

      TABELA_RELACIONADA= 'COMERCIARIOS';

      suspend;
   end

    /*=================================
       ATENDIMENTOS ASSOCIADOS
    =================================*/

      for
    select
        atendimento_associado.codigo,
        atendimento_associado.associado,
        ASSOCIADO.nome,
        atendimento_associado.data,
        atendimento_associado.hora,
        atendimento_associado.usuario,
        usuario.nome,
        atendimento_associado.tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_associado.cod_status,
        atendimento_associado.inicio_atendimento,
        atendimento_associado.fim_atendimento,
        atendimento_associado.tempo_atendimento,
        atendimento_associado.descricao
    from atendimento_associado
    inner join usuario on (atendimento_associado.usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_associado.tipo_atendimento = tipo_atendimento.codigo)
    inner join ASSOCIADO on (atendimento_associado.associado = ASSOCIADO.codigo)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin

      TABELA_RELACIONADA= 'ASSOCIADO';

      suspend;
   end

    /*=================================
       ATENDIMENTOS CONTABILIDADES
    =================================*/
      for
    select
        atendimento_contabilidade.codigo,
        atendimento_contabilidade.contabilidade,
        contabilidade.razaosocial,
        atendimento_contabilidade.data,
        atendimento_contabilidade.hora,
        atendimento_contabilidade.usuario,
        usuario.nome,
        atendimento_contabilidade.tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_contabilidade.cod_status,
        atendimento_contabilidade.inicio_atendimento,
        atendimento_contabilidade.fim_atendimento,
        atendimento_contabilidade.tempo_atendimento,
        atendimento_contabilidade.descricao
    from atendimento_contabilidade
    inner join usuario on (atendimento_contabilidade.usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_contabilidade.tipo_atendimento = tipo_atendimento.codigo)
    inner join contabilidade on (atendimento_contabilidade.contabilidade = contabilidade.cnpj)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin

      TABELA_RELACIONADA= 'CONTABILIDADE';

      suspend;
   end
    /*=================================
       ATENDIMENTOS ENTIDADES SINDICAIS
    =================================*/

      for
    select
        atendimento_entidade_sindical.codigo,
        atendimento_entidade_sindical.cod_entidade_sindical,
        entidade_sindical.razaosocial,
        atendimento_entidade_sindical.data_atendimento,
        atendimento_entidade_sindical.hora_cad,
        atendimento_entidade_sindical.cod_usuario,
        usuario.nome,
        atendimento_entidade_sindical.cod_tipo_atendimento,
        tipo_atendimento.descricao,
        atendimento_entidade_sindical.cod_status_atendimento,
        atendimento_entidade_sindical.inicio_atendimento,
        atendimento_entidade_sindical.fim_atendimento,
        atendimento_entidade_sindical.tempo_atendimento,
        atendimento_entidade_sindical.descricao
    from atendimento_entidade_sindical
    inner join usuario on (atendimento_entidade_sindical.cod_usuario = usuario.codigo)
    inner join tipo_atendimento on (atendimento_entidade_sindical.cod_tipo_atendimento = tipo_atendimento.codigo)
    inner join entidade_sindical on (atendimento_entidade_sindical.cod_entidade_sindical = entidade_sindical.cod_entidade_sindical)


       into :COD_ATENDIMENTO , :LINK_CODIGO, :LINK_DESCRICAO, :DATA, :HORA, :USUARIO_COD, :USUARIO_DESC
           , :TIPO_ATENDIMENTO_COD , :TIPO_ATENDIMENTO_DESC , :COD_STATUS
           , :INICIO , :FIM , :TEMPO, :ATENDIMENTO do
   begin

      TABELA_RELACIONADA= 'ENTIDADE_SINDICAL';

      suspend;
   end

end^


ALTER PROCEDURE PROC_RELAT_COBRANCA
RETURNS (
    COBRANCA_COD_COBRANCA NUMERIC(15,2),
    COBRANCA_COD_USUARIO INTEGER,
    COBRANCA_COD_STATUS INTEGER,
    COBRANCA_OBS VARCHAR(10000),
    COBRANCA_STATUS_DESCRICAO VARCHAR(80),
    COBRANCA_DATA_INICIO_PROCESSO DATE,
    COBRANCA_DATA_ENCERRAMENTO DATE,
    COBRANCA_DESCRICAO VARCHAR(80),
    COBRANCA_VALOR_FINAL NUMERIC(15,2),
    COBRANCA_DESCONTO_FINAL_VALOR NUMERIC(15,2),
    COBRANCA_ACRESCIMO_FINAL NUMERIC(15,2),
    COBRANCA_JUROS_FINAL NUMERIC(15,2),
    COBRANCA_MULTA_FINAL NUMERIC(15,2),
    CPF_CNPJ VARCHAR(14),
    NOME_RAZAO_SOCIAL VARCHAR(200),
    COBRANCA_TABELA_RELACIONADA VARCHAR(80),
    COBRANCA_COD_TABELA_RELACIONADA VARCHAR(80))
AS
begin
   for
       /*==============================================================
         selciona os dados das cobrancas
       ================================================================*/
      select COBRANCA.COD_COBRANCA
           , COBRANCA.COD_USUARIO
           , COBRANCA.COD_STATUS
           , COBRANCA.TABELA_RELACIONADA
           , COBRANCA.COD_TABELA_RELACIONADA
           , COBRANCA.OBS
           , COBRANCA.DATA_INICIO_PROCESSO
           , COBRANCA.DATA_ENCERRAMENTO
           , COBRANCA.DESCRICAO
           , COBRANCA.VALOR_FINAL
           , COBRANCA.DESCONTO_FINAL_VALOR
           , COBRANCA.ACRESCIMO_FINAL
           , COBRANCA.JUROS_FINAL
           , COBRANCA.MULTA_FINAL

           , COBRANCA_STATUS.DESCRICAO

      from COBRANCA
         left join COBRANCA_STATUS on COBRANCA_STATUS.COD_STATUS = COBRANCA.COD_STATUS

       into :COBRANCA_COD_COBRANCA ,:COBRANCA_COD_USUARIO, :COBRANCA_COD_STATUS, :COBRANCA_TABELA_RELACIONADA, :COBRANCA_COD_TABELA_RELACIONADA
           , :COBRANCA_OBS , :COBRANCA_DATA_INICIO_PROCESSO , :COBRANCA_DATA_ENCERRAMENTO
           , :COBRANCA_DESCRICAO , :COBRANCA_VALOR_FINAL , :COBRANCA_DESCONTO_FINAL_VALOR , :COBRANCA_ACRESCIMO_FINAL
           , :COBRANCA_JUROS_FINAL , :COBRANCA_MULTA_FINAL, :COBRANCA_STATUS_DESCRICAO do
   begin

      /*============================================
         seleciona os dados do cliente.. pode ser associado. empresa entidade sindical etc
      ===============================================*/

      if (COBRANCA_TABELA_RELACIONADA = 'EMPRESA') then
      begin
         SELECT empresa.CNPJ
             ,  empresa.RAZAOSOCIAL
         from EMPRESA
         where empresa.CNPJ = :COBRANCA_COD_TABELA_RELACIONADA
         into :CPF_CNPJ, :NOME_RAZAO_SOCIAL;
      end

      if (COBRANCA_TABELA_RELACIONADA =  'ENTIDADE_SINDICAL') then
      begin
         SELECT ENTIDADE_SINDICAL.CNPJ
             ,  ENTIDADE_SINDICAL.RAZAOSOCIAL
         from ENTIDADE_SINDICAL
         where ENTIDADE_SINDICAL.CODIGO_SINDICAL = :COBRANCA_COD_TABELA_RELACIONADA
         into :CPF_CNPJ, :NOME_RAZAO_SOCIAL;
      end

      if (COBRANCA_TABELA_RELACIONADA =  'ASSOCIADO') then
      begin
         SELECT ASSOCIADO.CPF
             ,  ASSOCIADO.NOME
         from ASSOCIADO
         where ASSOCIADO.CODIGO = :COBRANCA_COD_TABELA_RELACIONADA
         into :CPF_CNPJ, :NOME_RAZAO_SOCIAL;
      end

      suspend;
   end

end^


ALTER PROCEDURE PROC_REMOVE_ARRECADACAO_DUPLICA
RETURNS (
    ENCON_COD_ARRECADACAO NUMERIC(15,0))
AS
declare variable SQL varchar(5000);
declare variable COD_ARRECADCAO numeric(15,0);
declare variable TABELA varchar(80);
declare variable COD_TABELA varchar(80);
declare variable COMPETENCIA integer;
declare variable COMPLEMENTAR integer;
declare variable COD_TIPO_COBRANCA integer;
declare variable DATA_VENC date;
declare variable DATA_PGTO date;
begin
  /* remove os lancamentos de arrecadacao duplicda que ja foram pagos e que existe algum ainda em aberto */

/*  for
      select ARRECADACAO.COD_ARRECADACAO
           , ARRECADACAO.DATA_VENCIMENTO
           , ARRECADACAO.DATA_PAGAMENTO
           , COALESCE( ARRECADACAO.TABELA_RELACIONADA , '')
           , COALESCE( ARRECADACAO.COD_TABELA_RELACIONADA , '')
           , ARRECADACAO.COD_TIPO_COBRANCA
           , ARRECADACAO.COMPETENCIA
           , ARRECADACAO.COMPLEMENTAR
       from arrecadacao
       where arrecadacao.DATA_PAGAMENTO is not NULL
       into :COD_ARRECADCAO, :DATA_VENC, :DATA_PGTO, :TABELA, :COD_TABELA,
            :COD_TIPO_COBRANCA, :COMPETENCIA, :COMPLEMENTAR do

       begin
          sql = '';
          sql = sql || ' select ARRECADACAO.COD_ARRECADACAO '
                    || ' from ARRECADACAO '
                    || ' where ARRECADACAO.COD_ARRECADACAO        <> '|| :COD_ARRECADCAO
                    || '    and ARRECADACAO.COD_TIPO_COBRANCA      = '|| :COD_TIPO_COBRANCA
                    || '    and ARRECADACAO.COMPETENCIA            = '|| :COMPETENCIA;

          if (:DATA_VENC is NULL) then
             sql = sql || ' and ARRECADACAO.DATA_VENCIMENTO is null ';
          else
             sql = sql || ' and ARRECADACAO.DATA_VENCIMENTO = '|| '''' || :DATA_VENC || '''';

          if (:COMPLEMENTAR is NULL) then
             sql = sql || '    and ARRECADACAO.COMPLEMENTAR is null ';
          else
             sql = sql || '    and ARRECADACAO.COMPLEMENTAR = '|| :COMPLEMENTAR;

          sql = sql || '    and ARRECADACAO.TABELA_RELACIONADA     = '|| '''' ||:TABELA     || '''';
          sql = sql || '    and ARRECADACAO.COD_TABELA_RELACIONADA = '|| '''' ||:COD_TABELA || '''';
          sql = sql || '    and ARRECADACAO.DATA_PAGAMENTO is null ';

--          if (SQL is null) then
--          begin
--              ENCON_COD_ARRECADACAO = :COD_ARRECADCAO;
--              suspend;
--              EXIT;
--          end

         for EXECUTE STATEMENT : sql
            into :ENCON_COD_ARRECADACAO do
           begin
              update ARRECADACAO set ARRECADACAO.EXCLUIDA = 'T'
                   , ARRECADACAO.OBS_OUTRAS = ARRECADACAO.OBS_OUTRAS ||' Guia Excluida pela PROC_REMOVE_ARRECADACAO_DUPLICA por existir uma guia paga com memsa competencia e complementar'
              where ARRECADACAO.COD_ARRECADACAO = :ENCON_COD_ARRECADACAO
                AND ARRECADACAO.EXCLUIDA IS NULL ;
              SUSPEND;
           end


       end
*/
   /*========================= seleciona a guias que existem com mesma compentencia e complementar e deixa somente uma */

     for
      select ARRECADACAO.COD_ARRECADACAO
           , ARRECADACAO.DATA_VENCIMENTO
           , ARRECADACAO.DATA_PAGAMENTO
           , COALESCE( ARRECADACAO.TABELA_RELACIONADA , '')
           , COALESCE( ARRECADACAO.COD_TABELA_RELACIONADA , '')
           , ARRECADACAO.COD_TIPO_COBRANCA
           , ARRECADACAO.COMPETENCIA
           , ARRECADACAO.COMPLEMENTAR
       from arrecadacao
       order by arrecadacao.DATA_PAGAMENTO
       into :COD_ARRECADCAO, :DATA_VENC, :DATA_PGTO, :TABELA, :COD_TABELA,
            :COD_TIPO_COBRANCA, :COMPETENCIA, :COMPLEMENTAR do
     begin
        update ARRECADACAO set ARRECADACAO.EXCLUIDA = 'T'
                             , ARRECADACAO.OBSERVACOES_SISTEMA = 'Excluida por existir  mais de um lancamento com mesma competencia e complementar'
        where arrecadacao.COMPETENCIA =   :COMPETENCIA
           and arrecadacao.COMPLEMENTAR = :COMPLEMENTAR
           and ARRECADACAO.TABELA_RELACIONADA = :TABELA
           and ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA
           and ARRECADACAO.DATA_PAGAMENTO is null
           and ARRECADACAO.WS_AUTENTICACAO is null
           and ARRECADACAO.COD_ARRECADACAO <> :COD_ARRECADCAO;
     end

end^


ALTER PROCEDURE PROC_RESUMO_ATENDIMENTOS_SERVIC (
    DATA_INICIO DATE,
    DATA_FIM DATE)
RETURNS (
    QTD_ATENDIMENTOS INTEGER,
    QTD_ATENDIMENTOS_PAGOS INTEGER,
    QTD_ATENDIMENTOS_GRATIS INTEGER,
    VALOR_TOTAL_ATENDIMENTOS NUMERIC(15,2),
    QTD_ASSOCIADOS INTEGER,
    QTD_DEPENDENTES INTEGER,
    QTD_COMERCIARIOS INTEGER,
    VALOR_ASSOCIADOS NUMERIC(15,2),
    VALOR_DEPENDENTES NUMERIC(15,2),
    VALOR_COMERCIARIOS NUMERIC(15,2),
    QTD_PROCEDIMENTOS_ASSOCIADOS INTEGER,
    QTD_PROCEDIMENTOS_DEPENDENTES INTEGER,
    QTD_PROCEDIMENTOS_COMERCIARIOS INTEGER,
    QTD_ATEND_GRATIS_ASSOCIADOS INTEGER,
    QTD_ATEND_GRATIS_DEPENDENTES INTEGER,
    QTD_ATEND_GRATIS_COMERCIARIOS INTEGER,
    QTD_ATEND_PAGAS_ASSOCIADOS INTEGER,
    QTD_ATEND_PAGAS_DEPENDENTES INTEGER,
    QTD_ATEND_PAGAS_COMERCIARIOS INTEGER,
    QTD_ASSOCIADO_SEM_PROCEDIMENTO INTEGER,
    QTD_DEPENDENTE_SEM_PROCEDIMENTO INTEGER,
    QTD_COMERC_SEM_PROCEDIMENTO INTEGER)
AS
begin
  /*====================================
    resumos dos atendimentos de servicoes prestados ao associados
  =======================================*/

  /*=============== quantidade de atendimentos associados ==============*/
    select count(LANCAMENTOS_SERVICOS.CODIGO)
          from LANCAMENTOS_SERVICOS
          where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and  :DATA_FIM  
              and LANCAMENTOS_SERVICOS.PARENTESCO = 'ASSOCIADO'
  into :QTD_ASSOCIADOS;

  /*=============== quantidade de procedimentos gratis associados atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO = 'ASSOCIADO'
     and LANCAMENTOS_SERVICOS.GRATIS = 'T'
  into :QTD_ATEND_GRATIS_ASSOCIADOS;

  /*=============== quantidade de procedimentos PAGOS associados atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO = 'ASSOCIADO'
     and ( LANCAMENTOS_SERVICOS.GRATIS = 'F' or LANCAMENTOS_SERVICOS.GRATIS is null)
  into :QTD_ATEND_PAGAS_ASSOCIADOS;

  /*===================== quantidade total de atendimento por associados ==============*/
  select count(ITENS_SERVICO.CODIGO)
       , sum (ITENS_SERVICO.VALOR)
  from LANCAMENTOS_SERVICOS
     inner join ITENS_SERVICO on ITENS_SERVICO.CODIGO_LANCAMENTO_SERVICO = LANCAMENTOS_SERVICOS.CODIGO
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO = 'ASSOCIADO'
  into :QTD_procedimentos_ASSOCIADOS, :VALOR_ASSOCIADOS;

   /*================ quantidade de atendimento sem informacoes de procedimentos ============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.CODIGO not in(select ITENS_SERVICO.CODIGO_LANCAMENTO_SERVICO
                                           from ITENS_SERVICO
                                           )
    and LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO = 'ASSOCIADO'
 into :QTD_ASSOCIADO_SEM_PROCEDIMENTO;

/*============================== INFORMACOES DOS DEPENDENTES ========================================*/

  /*=============== quantidade de procedimentos de DEPENDENTES atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO <> 'ASSOCIADO'
  into :QTD_DEPENDENTES;

  /*=============== quantidade de procedimentos gratis DEPENDENTES atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO <> 'ASSOCIADO'
     and LANCAMENTOS_SERVICOS.GRATIS = 'T'
  into :QTD_ATEND_GRATIS_DEPENDENTES;

  /*=============== quantidade de procedimentos PAGOS DEPENDENTES atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO <> 'ASSOCIADO'
     and LANCAMENTOS_SERVICOS.GRATIS = 'F'
  into :QTD_ATEND_PAGAS_DEPENDENTES;

  /*===================== quantidade total de atendimento por DEPENDENTES ==============*/
  select count(ITENS_SERVICO.CODIGO)
       , sum (ITENS_SERVICO.VALOR)
  from LANCAMENTOS_SERVICOS
     inner join ITENS_SERVICO on ITENS_SERVICO.CODIGO_LANCAMENTO_SERVICO = LANCAMENTOS_SERVICOS.CODIGO
  where LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO <> 'ASSOCIADO'
  into :QTD_PROCEDIMENTOS_DEPENDENTES, :VALOR_DEPENDENTES;

   /*================ quantidade de atendimento sem informacoes de procedimentos ============*/
  select count(LANCAMENTOS_SERVICOS.CODIGO)
  from LANCAMENTOS_SERVICOS
  where LANCAMENTOS_SERVICOS.CODIGO not in(select ITENS_SERVICO.CODIGO_LANCAMENTO_SERVICO
                                           from ITENS_SERVICO
                                           )
    and LANCAMENTOS_SERVICOS.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS.PARENTESCO <> 'ASSOCIADO'
 into :QTD_DEPENDENTE_SEM_PROCEDIMENTO;


/*============================== INFORMACOES DOS COMERCIARIOS ========================================*/

  /*=============== quantidade de procedimentos de COMERCIARIOS atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS_GENERICO.CODIGO)
  from LANCAMENTOS_SERVICOS_GENERICO
  where LANCAMENTOS_SERVICOS_GENERICO.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
  into :QTD_COMERCIARIOS;

  /*=============== quantidade de procedimentos gratis COMERCIARIOS atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS_GENERICO.CODIGO)
  from LANCAMENTOS_SERVICOS_GENERICO
  where LANCAMENTOS_SERVICOS_GENERICO.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS_GENERICO.GRATIS = 'T'
  into :QTD_ATEND_GRATIS_COMERCIARIOS;

  /*=============== quantidade de procedimentos PAGOS COMERCIARIOS atendidos ==============*/
  select count(LANCAMENTOS_SERVICOS_GENERICO.CODIGO)
  from LANCAMENTOS_SERVICOS_GENERICO
  where LANCAMENTOS_SERVICOS_GENERICO.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
     and LANCAMENTOS_SERVICOS_GENERICO.GRATIS = 'F'
  into :QTD_ATEND_PAGAS_COMERCIARIOS;

  /*===================== quantidade total de atendimento por COMERCIARIOS ==============*/
  select count(ITENS_SERVICO_GENERICO.CODIGO)
       , sum (ITENS_SERVICO_GENERICO.VALOR)
  from LANCAMENTOS_SERVICOS_GENERICO
     inner join ITENS_SERVICO_GENERICO on ITENS_SERVICO_GENERICO.CODIGO_LANCAMENTO_SERV_GENERICO = LANCAMENTOS_SERVICOS_GENERICO.CODIGO
  where LANCAMENTOS_SERVICOS_GENERICO.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
  into :QTD_PROCEDIMENTOS_COMERCIARIOS, :VALOR_COMERCIARIOS;

   /*================ quantidade de atendimento sem informacoes de procedimentos ============*/
  select count(LANCAMENTOS_SERVICOS_GENERICO.CODIGO)
  from LANCAMENTOS_SERVICOS_GENERICO
  where LANCAMENTOS_SERVICOS_GENERICO.CODIGO not in(select ITENS_SERVICO_GENERICO.CODIGO_LANCAMENTO_SERV_GENERICO
                                                     from ITENS_SERVICO_GENERICO
                                                    )
    and LANCAMENTOS_SERVICOS_GENERICO.DATA_LANCAMENTO BETWEEN :DATA_INICIO and :DATA_FIM
 into :QTD_COMERC_SEM_PROCEDIMENTO;


  QTD_ATENDIMENTOS = coalesce(QTD_ASSOCIADOS   , 0) +
                      coalesce(QTD_DEPENDENTES  , 0) +
                      coalesce(QTD_COMERCIARIOS , 0);

  QTD_ATENDIMENTOS_PAGOS = coalesce(QTD_ATEND_PAGAS_ASSOCIADOS   , 0) +
                            coalesce(QTD_ATEND_PAGAS_DEPENDENTES  , 0) +
                            coalesce(QTD_ATEND_PAGAS_COMERCIARIOS , 0);

  QTD_ATENDIMENTOS_GRATIS =  coalesce(QTD_ATEND_GRATIS_ASSOCIADOS   , 0) +
                             coalesce(QTD_ATEND_GRATIS_DEPENDENTES  , 0) +
                             coalesce(QTD_ATEND_GRATIS_COMERCIARIOS , 0);

   VALOR_TOTAL_ATENDIMENTOS = coalesce(VALOR_ASSOCIADOS , 0) +
                              coalesce(VALOR_DEPENDENTES , 0) +
                              coalesce(VALOR_COMERCIARIOS , 0) ;
  suspend;
end^


ALTER PROCEDURE PROC_RESUMO_HOMOLOGACAO (
    DATA_INI_HOMOLOGACAO DATE,
    DATA_FIM_HOMOLOGACAO DATE)
RETURNS (
    QUANTIDADE INTEGER,
    MENORES_18ANOS INTEGER,
    MAIORES_18ANOS INTEGER,
    FEMININO INTEGER,
    MASCULINO INTEGER,
    OUTROS_SEXOS INTEGER,
    MENOS_DE_1ANO_SERVICO INTEGER,
    SERVICO_1ANO INTEGER,
    SERVICO_2ANOS INTEGER,
    SERVICO_3ANOS INTEGER,
    SERVICO_4ANOS INTEGER,
    SERVICO_5ANOS INTEGER,
    SERVICO_6ANOS INTEGER,
    SERVICO_7ANOS INTEGER,
    SERVICO_8ANOS INTEGER,
    SERVICO_9ANOS INTEGER,
    SERVICO_10ANOS INTEGER,
    SERVICO_11ANOS INTEGER,
    SERVICO_12ANOS INTEGER,
    SERVICO_13ANOS INTEGER,
    SERVICO_14ANOS INTEGER,
    MAIS_DE_15ANOS_SERVICO INTEGER,
    AVISO_IDENIZADO INTEGER,
    AVISO_DESCONTADO INTEGER,
    AVISO_TRABALHADO INTEGER,
    TOTAL_BRUTO NUMERIC(15,2),
    TOTAL_DESCONTOS NUMERIC(15,2),
    TOTAL_LIQUIDO NUMERIC(15,2),
    CAUSA_AFASTAMENTO VARCHAR(80),
    QTD_CAUSA_AFASTAMENTO INTEGER)
AS
declare variable TOTAL_TEMP_SERVICO integer;
declare variable TEMP integer;
declare variable TOTAL_MAIORES_18 integer;
declare variable TOTAL_MENORES_18 integer;
declare variable I integer;
begin

   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
   into :QUANTIDADE;

   /*================================
      SEXO FEMININO
   ==================================*/

   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.SEXO = 'F'
   INTO :FEMININO;

   /*================================
      SEXO MASCULINOS
   ==================================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.SEXO = 'M'
   INTO :MASCULINO;


   /*================================
      SEXO OUTROS
   ==================================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
      AND HOMOLOGACAO.SEXO <> 'M'
      AND HOMOLOGACAO.SEXO <> 'F'
   INTO :OUTROS_SEXOS;

   /*================================
      MENORES DE 18 ANOS NA DATA DA HOMOLOGACAO
   ==================================*/
   MENORES_18ANOS = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            , CASE
               WHEN ((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                       (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
      
               WHEN (((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                    ((EXTRACT(DAY FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                        (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE
                  ((EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END
      from HOMOLOGACAO
      where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO

      group by 2
      
      HAVING
             CASE
               WHEN ((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               WHEN (((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                     ((EXTRACT(DAY FROM DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE ((EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END < 18

      into :TOTAL_MENORES_18, :temp do
      begin
         MENORES_18ANOS = MENORES_18ANOS + TOTAL_MENORES_18;
      end

   /*================================
      MAIORES DE 18 ANOS NA DATA DA HOMOLOGACAO
   ==================================*/
   MAIORES_18ANOS = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            , CASE
               WHEN ((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                       (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
      
               WHEN (((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                    ((EXTRACT(DAY FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                        (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE
                  ((EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END
      from HOMOLOGACAO
      where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO

      
      group by 2
      
      HAVING
             CASE
               WHEN ((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               WHEN (((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                     ((EXTRACT(DAY FROM DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE ((EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END >= 18

      into :TOTAL_MAIORES_18, :temp do
      begin
         MAIORES_18ANOS = MAIORES_18ANOS + TOTAL_MAIORES_18;
      end


   /*================================
      TEMPO DE SERVIÇO ATE 15 ANOS
   ==================================*/
    MENOS_DE_1ANO_SERVICO = 0;
    SERVICO_2ANOS         = 0;
    SERVICO_3ANOS         = 0;
    SERVICO_4ANOS         = 0;
    SERVICO_5ANOS         = 0;
    SERVICO_6ANOS         = 0;
    SERVICO_7ANOS         = 0;
    SERVICO_8ANOS         = 0;
    SERVICO_9ANOS         = 0;
    SERVICO_10ANOS        = 0;
    SERVICO_11ANOS        = 0;
    SERVICO_12ANOS        = 0;
    SERVICO_13ANOS        = 0;
    SERVICO_14ANOS        = 0;

   i = 0;
   while (I < 15) do
   begin
      select count(HOMOLOGACAO.CODIGO)

            ,((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)

      from HOMOLOGACAO
      where HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
            AND HOMOLOGACAO.complementar = 'N'
      group by 2

      HAVING
         ((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)   = :i

       into :TOTAL_TEMP_SERVICO, :temp;


       if (temp = 0 ) then
          MENOS_DE_1ANO_SERVICO =  COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 1 ) then
          SERVICO_1ANO  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 2 ) then
          SERVICO_2ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 3 ) then
          SERVICO_3ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 4 ) then
          SERVICO_4ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 5 ) then
          SERVICO_5ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 6 ) then
          SERVICO_6ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 7 ) then
          SERVICO_7ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 8 ) then
          SERVICO_8ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 9 ) then
          SERVICO_9ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 10 ) then
          SERVICO_10ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 11 ) then
          SERVICO_11ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 12 ) then
          SERVICO_12ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 13 ) then
          SERVICO_13ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 14 ) then
          SERVICO_14ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);
     i = i +1;
   end
   
   /*================================
      TEMPO DE SERVIÇO mais de 15 ANOS
   ==================================*/
   MAIS_DE_15ANOS_SERVICO = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            ,((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)

      from HOMOLOGACAO
      where HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
            AND HOMOLOGACAO.complementar = 'N'
      group by 2
      
      HAVING
         ((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)  >= 15

   into :TOTAL_TEMP_SERVICO, :temp do
   begin
      MAIS_DE_15ANOS_SERVICO = MAIS_DE_15ANOS_SERVICO + TOTAL_TEMP_SERVICO;
      MAIS_DE_15ANOS_SERVICO = COALESCE( :MAIS_DE_15ANOS_SERVICO  , 0);
   end

   /*===========================
     AVISO IDENIZADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO = HOMOLOGACAO.DATA_DEMISSAO
     AND HOMOLOGACAO.TIPO_AFASTAMENTO <> 0
   INTO :AVISO_IDENIZADO;

   /*===========================
     AVISO DESCONTADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO = HOMOLOGACAO.DATA_DEMISSAO
     AND HOMOLOGACAO.TIPO_AFASTAMENTO = 0
   INTO :AVISO_DESCONTADO ;

   /*===========================
     DIAS TRABALHADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO <> HOMOLOGACAO.DATA_DEMISSAO
   INTO :AVISO_TRABALHADO;


   /*===========================
    DADOS FINANCEIROS
   =============================*/
   SELECT  SUM( COALESCE(HOMOLOGACAO.TOTAL_BRUTO , 0)) AS TOTAL_BRUTO
         , SUM( COALESCE(HOMOLOGACAO.TOTAL_DESCONTOS, 0)) AS TOTAL_DESCONTO
         , (
           SUM( COALESCE(HOMOLOGACAO.TOTAL_BRUTO , 0)) - SUM( COALESCE(HOMOLOGACAO.TOTAL_DESCONTOS, 0))
         ) AS TOTAL_LIQUIDO
   
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
   INTO :TOTAL_BRUTO , :TOTAL_DESCONTOS , TOTAL_LIQUIDO;


   /*===========================
    TIPO DE AFASTAMENTO
   =============================*/
   I = 0;
   FOR
      SELECT  COUNT(TIPO_AFASTAMENTO.CODIGO)
            , TIPO_AFASTAMENTO.CAUSA
      FROM HOMOLOGACAO
         INNER JOIN TIPO_AFASTAMENTO ON TIPO_AFASTAMENTO.CODIGO = HOMOLOGACAO.TIPO_AFASTAMENTO
      WHERE HOMOLOGACAO.complementar = 'N' AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO

      GROUP BY TIPO_AFASTAMENTO.CAUSA
      INTO :QTD_CAUSA_AFASTAMENTO , :CAUSA_AFASTAMENTO DO
   BEGIN
      suspend;
      I =1;
   END

   if (I=0) then
   BEGIN
      SUSPEND;
   END

end^


ALTER PROCEDURE PROC_RESUMO_HOMOLOGACAO_FILIAL (
    DATA_INI_HOMOLOGACAO DATE,
    DATA_FIM_HOMOLOGACAO DATE,
    COD_FILIAL INTEGER)
RETURNS (
    QUANTIDADE INTEGER,
    MENORES_18ANOS INTEGER,
    MAIORES_18ANOS INTEGER,
    FEMININO INTEGER,
    MASCULINO INTEGER,
    OUTROS_SEXOS INTEGER,
    MENOS_DE_1ANO_SERVICO INTEGER,
    SERVICO_1ANO INTEGER,
    SERVICO_2ANOS INTEGER,
    SERVICO_3ANOS INTEGER,
    SERVICO_4ANOS INTEGER,
    SERVICO_5ANOS INTEGER,
    SERVICO_6ANOS INTEGER,
    SERVICO_7ANOS INTEGER,
    SERVICO_8ANOS INTEGER,
    SERVICO_9ANOS INTEGER,
    SERVICO_10ANOS INTEGER,
    SERVICO_11ANOS INTEGER,
    SERVICO_12ANOS INTEGER,
    SERVICO_13ANOS INTEGER,
    SERVICO_14ANOS INTEGER,
    MAIS_DE_15ANOS_SERVICO INTEGER,
    AVISO_IDENIZADO INTEGER,
    AVISO_DESCONTADO INTEGER,
    AVISO_TRABALHADO INTEGER,
    TOTAL_BRUTO NUMERIC(15,2),
    TOTAL_DESCONTOS NUMERIC(15,2),
    TOTAL_LIQUIDO NUMERIC(15,2),
    CAUSA_AFASTAMENTO VARCHAR(80),
    QTD_CAUSA_AFASTAMENTO INTEGER)
AS
declare variable TOTAL_TEMP_SERVICO integer;
declare variable TEMP integer;
declare variable TOTAL_MAIORES_18 integer;
declare variable TOTAL_MENORES_18 integer;
declare variable I integer;
begin

   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL
   into :QUANTIDADE;

   /*================================
      SEXO FEMININO
   ==================================*/

   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.SEXO = 'F'
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL
   INTO :FEMININO;

   /*================================
      SEXO MASCULINOS
   ==================================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.SEXO = 'M'
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :MASCULINO;


   /*================================
      SEXO OUTROS
   ==================================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE  HOMOLOGACAO.complementar = 'N'
      AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
      AND HOMOLOGACAO.SEXO <> 'M'
      AND HOMOLOGACAO.SEXO <> 'F'
      AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :OUTROS_SEXOS;

   /*================================
      MENORES DE 18 ANOS NA DATA DA HOMOLOGACAO
   ==================================*/
   MENORES_18ANOS = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            , CASE
               WHEN ((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                       (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
      
               WHEN (((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                    ((EXTRACT(DAY FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                        (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE
                  ((EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END
      from HOMOLOGACAO
      where HOMOLOGACAO.complementar = 'N'
        AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
        AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

      group by 2
      
      HAVING
             CASE
               WHEN ((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               WHEN (((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                     ((EXTRACT(DAY FROM DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE ((EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END < 18

      into :TOTAL_MENORES_18, :temp do
      begin
         MENORES_18ANOS = MENORES_18ANOS + TOTAL_MENORES_18;
      end

   /*================================
      MAIORES DE 18 ANOS NA DATA DA HOMOLOGACAO
   ==================================*/
   MAIORES_18ANOS = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            , CASE
               WHEN ((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                       (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
      
               WHEN (((EXTRACT(MONTH FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                    ((EXTRACT(DAY FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                        (EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE
                  ((EXTRACT(YEAR FROM homologacao.DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END
      from HOMOLOGACAO
      where HOMOLOGACAO.complementar = 'N'
        AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
        AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

      
      group by 2
      
      HAVING
             CASE
               WHEN ((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) > 0) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               WHEN (((EXTRACT(MONTH FROM DATA_HOMOLOGACAO) - EXTRACT(MONTH FROM homologacao.DATA_NASCIMENTO)) = 0) AND
                     ((EXTRACT(DAY FROM DATA_HOMOLOGACAO) - EXTRACT(DAY FROM homologacao.DATA_NASCIMENTO)) >= 0)) THEN
                    (EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))
               ELSE ((EXTRACT(YEAR FROM DATA_HOMOLOGACAO) - EXTRACT(YEAR FROM homologacao.DATA_NASCIMENTO))-1)
             END >= 18

      into :TOTAL_MAIORES_18, :temp do
      begin
         MAIORES_18ANOS = MAIORES_18ANOS + TOTAL_MAIORES_18;
      end


   /*================================
      TEMPO DE SERVIÇO ATE 15 ANOS
   ==================================*/
    MENOS_DE_1ANO_SERVICO = 0;
    SERVICO_2ANOS         = 0;
    SERVICO_3ANOS         = 0;
    SERVICO_4ANOS         = 0;
    SERVICO_5ANOS         = 0;
    SERVICO_6ANOS         = 0;
    SERVICO_7ANOS         = 0;
    SERVICO_8ANOS         = 0;
    SERVICO_9ANOS         = 0;
    SERVICO_10ANOS        = 0;
    SERVICO_11ANOS        = 0;
    SERVICO_12ANOS        = 0;
    SERVICO_13ANOS        = 0;
    SERVICO_14ANOS        = 0;

   i = 0;
   while (I < 15) do
   begin
      select count(HOMOLOGACAO.CODIGO)

            ,((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)

      from HOMOLOGACAO
      where HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
       AND HOMOLOGACAO.complementar = 'N'
       AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

      group by 2

      HAVING
         ((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)   = :i

       into :TOTAL_TEMP_SERVICO, :temp;


       if (temp = 0 ) then
          MENOS_DE_1ANO_SERVICO =  COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 1 ) then
          SERVICO_1ANO  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 2 ) then
          SERVICO_2ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 3 ) then
          SERVICO_3ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 4 ) then
          SERVICO_4ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 5 ) then
          SERVICO_5ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 6 ) then
          SERVICO_6ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 7 ) then
          SERVICO_7ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 8 ) then
          SERVICO_8ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 9 ) then
          SERVICO_9ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 10 ) then
          SERVICO_10ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 11 ) then
          SERVICO_11ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 12 ) then
          SERVICO_12ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 13 ) then
          SERVICO_13ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);

       if (temp = 14 ) then
          SERVICO_14ANOS  = COALESCE( :TOTAL_TEMP_SERVICO , 0);
     i = i +1;
   end
   
   /*================================
      TEMPO DE SERVIÇO mais de 15 ANOS
   ==================================*/
   MAIS_DE_15ANOS_SERVICO = 0;
   for
      select count(HOMOLOGACAO.CODIGO)
      
            ,((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)

      from HOMOLOGACAO
      where HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
        AND HOMOLOGACAO.complementar = 'N'
        AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

      group by 2
      
      HAVING
         ((homologacao.DATA_DEMISSAO - homologacao.DATA_ADMISSAO) / 365)  >= 15

   into :TOTAL_TEMP_SERVICO, :temp do
   begin
      MAIS_DE_15ANOS_SERVICO = MAIS_DE_15ANOS_SERVICO + TOTAL_TEMP_SERVICO;
      MAIS_DE_15ANOS_SERVICO = COALESCE( :MAIS_DE_15ANOS_SERVICO  , 0);
   end

   /*===========================
     AVISO IDENIZADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO = HOMOLOGACAO.DATA_DEMISSAO
     AND HOMOLOGACAO.TIPO_AFASTAMENTO <> 0
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :AVISO_IDENIZADO;

   /*===========================
     AVISO DESCONTADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO = HOMOLOGACAO.DATA_DEMISSAO
     AND HOMOLOGACAO.TIPO_AFASTAMENTO = 0
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :AVISO_DESCONTADO ;

   /*===========================
     DIAS TRABALHADO
   =============================*/
   SELECT COUNT(HOMOLOGACAO.CODIGO)
   FROM HOMOLOGACAO
   WHERE HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.DATA_AVISO <> HOMOLOGACAO.DATA_DEMISSAO
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :AVISO_TRABALHADO;


   /*===========================
    DADOS FINANCEIROS
   =============================*/
   SELECT  SUM( COALESCE(HOMOLOGACAO.TOTAL_BRUTO , 0)) AS TOTAL_BRUTO
         , SUM( COALESCE(HOMOLOGACAO.TOTAL_DESCONTOS, 0)) AS TOTAL_DESCONTO
         , (
           SUM( COALESCE(HOMOLOGACAO.TOTAL_BRUTO , 0)) - SUM( COALESCE(HOMOLOGACAO.TOTAL_DESCONTOS, 0))
         ) AS TOTAL_LIQUIDO
   
   FROM HOMOLOGACAO
   where HOMOLOGACAO.complementar = 'N'
     AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
     AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

   INTO :TOTAL_BRUTO , :TOTAL_DESCONTOS , TOTAL_LIQUIDO;


   /*===========================
    TIPO DE AFASTAMENTO
   =============================*/
   I = 0;
   FOR
      SELECT  COUNT(TIPO_AFASTAMENTO.CODIGO)
            , TIPO_AFASTAMENTO.CAUSA
      FROM HOMOLOGACAO
         INNER JOIN TIPO_AFASTAMENTO ON TIPO_AFASTAMENTO.CODIGO = HOMOLOGACAO.TIPO_AFASTAMENTO
      WHERE HOMOLOGACAO.complementar = 'N'
        AND HOMOLOGACAO.DATA_HOMOLOGACAO BETWEEN :DATA_INI_HOMOLOGACAO and :DATA_FIM_HOMOLOGACAO
        AND HOMOLOGACAO.COD_FILIAL = :COD_FILIAL

      GROUP BY TIPO_AFASTAMENTO.CAUSA
      INTO :QTD_CAUSA_AFASTAMENTO , :CAUSA_AFASTAMENTO DO
   BEGIN
      suspend;
      I =1;
   END

   if (I=0) then
   BEGIN
      SUSPEND;
   END

end^


ALTER PROCEDURE PROC_RESUMO_PGTO_SEMESTRE
RETURNS (
    SINDICATO_CODIGO INTEGER,
    SINDICATO_NOME VARCHAR(200),
    SINDICATO_COD_REPASSE_FED VARCHAR(10),
    SINDICATO_COD_SINDICAL VARCHAR(20),
    SINDICATO_CNPJ INTEGER,
    SEMESTRE_1_2015 NUMERIC(15,2),
    SEMESTRE_2_2015 NUMERIC(15,2),
    SEMESTRE_1_2016 NUMERIC(15,2),
    SEMESTRE_2_2016 NUMERIC(15,2),
    SEMESTRE_1_2017 NUMERIC(15,2),
    SEMESTRE_2_2017 NUMERIC(15,2),
    SEMESTRE_1_2018 NUMERIC(15,2),
    SEMESTRE_2_2018 NUMERIC(15,2),
    FEDERACAO_NOME VARCHAR(200),
    FEDERACAO_COD_SINDICAL VARCHAR(20),
    FEDERACAO_CNPJ VARCHAR(14))
AS
begin
  for
     select DISTINCT( ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL)
           , ENTIDADE_SINDICAL.RAZAOSOCIAL
           , coalesce(ENTIDADE_SINDICAL.CODIGO_SINDICAL , '000000000000000')
           , SUBSTRING ( COALESCE( ENTIDADE_SINDICAL.CODIGO_SINDICAL , '---------------') from 7 for 3 )

     from ENTIDADE_SINDICAL
        inner join ARRECADACAO on ARRECADACAO.COD_TABELA_RELACIONADA = ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
     where 0 = 0
       and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
       and ARRECADACAO.DATA_CREDITO >= '01.01.2015'
       and ENTIDADE_SINDICAL.GRAU_ENTIDADE = 'SINDICATO'
      order by ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL

     into :SINDICATO_CODIGO, :SINDICATO_NOME, :SINDICATO_COD_SINDICAL, :SINDICATO_COD_REPASSE_FED do
  begin
     /*=========================== selecina a federacao pelo codigo sindical ================*/

     FEDERACAO_COD_SINDICAL = '00000000000000';
     FEDERACAO_NOME         = 'SEM INFORMACAO DE FEDERACAO';
     FEDERACAO_CNPJ         = '00000000000000';

     select ENTIDADE_SINDICAL.CODIGO_SINDICAL
          , ENTIDADE_SINDICAL.RAZAOSOCIAL
          , ENTIDADE_SINDICAL.CNPJ
     from ENTIDADE_SINDICAL
     where  SUBSTRING ( ENTIDADE_SINDICAL.CODIGO_SINDICAL from 7 for 3 ) = :SINDICATO_COD_REPASSE_FED
        and ENTIDADE_SINDICAL.GRAU_ENTIDADE = 'FEDERAÇÃO'
     into :FEDERACAO_COD_SINDICAL, :FEDERACAO_NOME, :FEDERACAO_CNPJ;

/*
       =========== somente testes ==========
      SEMESTRE_1_2015 = 250352.22 ;
      SEMESTRE_2_2015 = 150652.36 ;
      SEMESTRE_1_2016 = 541547.65 ;
      SEMESTRE_2_2016 = 478512.85 ;
      SEMESTRE_1_2017 = 521747.00 ;
      SEMESTRE_2_2017 = 457412.98 ;
      SEMESTRE_1_2018 = 123547.66 ;
      SEMESTRE_2_2018 = 785412.36 ;
      suspend;
     */
      select
         ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.01.2015' and '30.06.2015'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
        , ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.07.2015' and '31.12.2015'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
       ,  ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.01.2016' and '30.06.2016'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
        , ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.07.2016' and '31.12.2016'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
       ,  ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.01.2017' and '30.06.2017'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
        , ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.07.2017' and '31.12.2017'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
       , ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.01.2018' and '30.06.2018'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
        , ( SELECT coalesce (sum(ARRECADACAO.VALOR_CREDITADO) , 0 )
              from ARRECADACAO
              where ARRECADACAO.DATA_CREDITO  BETWEEN '01.07.2018' and '31.12.2018'
                 and ARRECADACAO.TABELA_RELACIONADA = 'ENTIDADE_SINDICAL'
                 and ARRECADACAO.COD_TABELA_RELACIONADA =  :SINDICATO_CODIGO
            )
      
      
      from RDB$DATABASE
      into :SEMESTRE_1_2015 , :SEMESTRE_2_2015,
           :SEMESTRE_1_2016 , :SEMESTRE_2_2016,
           :SEMESTRE_1_2017 , :SEMESTRE_2_2017,
           :SEMESTRE_1_2018 , :SEMESTRE_2_2018;
          suspend;

  end

end^


ALTER PROCEDURE PROC_SINDICAL_NAO_GERADA (
    CNPJ VARCHAR(14))
RETURNS (
    EMPRESA_JF VARCHAR(1),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_RAZAOSOCIAL VARCHAR(80),
    EMPRESA_ENDERECO_CIDADE VARCHAR(80),
    EMPRESA_TELEFONE2 VARCHAR(10),
    EMPRESA_TELEFONE1 VARCHAR(10),
    GUIA_DATA_EMISSAO DATE,
    GUIA_DATA_BAIXA DATE,
    GUIA_DATA_VENCIMENTO DATE,
    GUIA_COMPETENCIA INTEGER,
    GUIA_COMPLEMENTAR INTEGER,
    GUIA_VALOR NUMERIC(15,2),
    GUIA_MULTA_JUROS NUMERIC(15,2),
    GUIA_VALOR_BAIXA NUMERIC(15,2),
    GUIA_TARIFA NUMERIC(15,2),
    GUIA_CODIGO NUMERIC(15,0),
    GUIA_EMPRESA VARCHAR(14),
    CONTABILIDADE_JF VARCHAR(1),
    CONTABILIDADE_CNPJ VARCHAR(14),
    CONTABILIDADE_RAZAOSOCIAL VARCHAR(80),
    CONTABILIDADE_TELEFONE1 VARCHAR(10),
    CONTABILIDADE_TELEFONE2 VARCHAR(10),
    COD_USUARIO_BAIXA INTEGER,
    COMENTARIO_SITUACAO VARCHAR(200))
AS
declare variable DIA integer;
declare variable MES integer;
declare variable ANO integer;
declare variable VENC_SINDICAL_PARAMETRO date;
declare variable COMPETENCIA_ATUAL integer;
declare variable ENCONTROU_SINDICAL varchar(1);
declare variable ENCONTRADA varchar(1);
declare variable CODIGO_CHAVE_TABELA integer;
declare variable INICIO_COBRANCA date;
declare variable DATA_BASE date;
declare variable INICIO_ATIVIDADE date;
declare variable MES_ANO_INICIO varchar(10);
declare variable MES_ANO_VENCIMENTO varchar(10);
BEGIN

  /*=====================================
   Encontra as guias sindicais nao geradas
   O parametro VERIFICA_GUIAS_NAO_GERADAS na tabela
   CONFIGURACAO_SINDICAL deve ser T
  =======================================*/ 

  select CONFIGURACAO_SINDICAL.VENCIMENTO_SINDICAL
       , CONFIGURACAO_SINDICAL.DATA_BASE_GUIAS_NAO_GERADAS
  from CONFIGURACAO_SINDICAL
  into :VENC_SINDICAL_PARAMETRO, :DATA_BASE;

  COMPETENCIA_ATUAL = EXTRACT(YEAR FROM current_date);

 /*=====================================
   pega a competencia atual (mes atual) e pega o inicio da cobranca da empresa (Competencia).
   A rotina fica em um Loop da competencia da empresa ate a comprencia atual
   Verificando se elas existem nas tabelas

 =======================================*/


   SELECT  EMPRESA.INICIO_COBRANCA
         , EMPRESA.INICIO_ATIVIDADE 
         , EMPRESA.JF
         , EMPRESA.CNPJ
         , EMPRESA.RAZAOSOCIAL 
         , EMPRESA.ENDERECO_CIDADE
         , EMPRESA.TELEFONE1
         , EMPRESA.TELEFONE2
   
         , CONTABILIDADE.JF
         , CONTABILIDADE.CNPJ
         , CONTABILIDADE.RAZAOSOCIAL
         , CONTABILIDADE.TELEFONE1
         , CONTABILIDADE.TELEFONE2
   
   FROM empresa
     LEFT JOIN CONTABILIDADE ON CONTABILIDADE.CNPJ = EMPRESA.CONTADOR
     inner join EMPRESA_STATUS on EMPRESA_STATUS.COD_EMPRESA_STATUS = EMPRESA.COD_STATUS
                              and EMPRESA_STATUS.GERA_GUIAS = 'T'

   where EMPRESA.CNPJ = :CNPJ
   INTO :INICIO_COBRANCA, :INICIO_ATIVIDADE ,:EMPRESA_JF, :EMPRESA_CNPJ, :EMPRESA_RAZAOSOCIAL, :EMPRESA_ENDERECO_CIDADE , :EMPRESA_TELEFONE1
        , :EMPRESA_TELEFONE2
        , :CONTABILIDADE_JF, :CONTABILIDADE_CNPJ , :CONTABILIDADE_RAZAOSOCIAL, :CONTABILIDADE_TELEFONE1
        , :CONTABILIDADE_TELEFONE2;


  /*=============================================
    Pega a maoir data entre INICIO_COBRANCA, INICIO_ATIVIDADE , DATA_BASE
    A maior vai ser a base para o inicio de cobranca
  ==============================================*/
  select PROC_MAIOR_DATA.DATA_MAIOR
  from PROC_MAIOR_DATA(:INICIO_ATIVIDADE,:INICIO_COBRANCA,:DATA_BASE)
  into :INICIO_COBRANCA;


  if (INICIO_COBRANCA IS NULL ) then
     EXIT;
     
  GUIA_COMPETENCIA = EXTRACT(YEAR FROM :INICIO_COBRANCA);


  while (:GUIA_COMPETENCIA <= :COMPETENCIA_ATUAL) do
  begin
     ENCONTRADA = 'F';
     ENCONTROU_SINDICAL = 'F' ;
     GUIA_DATA_EMISSAO = null;
     GUIA_COMPLEMENTAR = null;
     GUIA_VALOR = null;

     /*=====================================
        Verifica a compentencia na tabela de guias sindicais
        no caso de guia sindical a competencia é so o ano
     =======================================*/ 
     for
        select sindical.CODIGO
        from sindical
        where SINDICAL.EMPRESA = :CNPJ
        and SINDICAL.COMPETENCIA = :GUIA_COMPETENCIA
     INTO :CODIGO_CHAVE_TABELA do
     begin
        ENCONTRADA = 'T';
        ENCONTROU_SINDICAL = 'T';
     end

     /*============ monta a data de vencimento da guia sindical ==============*/
     dia        = EXTRACT(day from :VENC_SINDICAL_PARAMETRO);
     mes        = EXTRACT(month from :VENC_SINDICAL_PARAMETRO);
     GUIA_DATA_VENCIMENTO = dia||'.'||:mes||'.'|| :GUIA_COMPETENCIA;

     /*=====================================
         tenta localzar a guia na tabela de guias geradas na WEB
      =======================================*/ 
     if (encontrada = 'F') then
     begin
        for SELECT  GUIAS_DA_WEB.DATA_VENCIMENTO
                  , GUIAS_DA_WEB.DATA_GERACAO
                  , GUIAS_DA_WEB.COMPLEMENTAR
                  , GUIAS_DA_WEB.VALOR
            from GUIAS_DA_WEB
            where GUIAS_DA_WEB.CNPJ = :CNPJ
                and GUIAS_DA_WEB.COMPETENCIA = :GUIA_COMPETENCIA
                and GUIAS_DA_WEB.TIPO = 'SINDICAL'
        into :GUIA_DATA_VENCIMENTO,:GUIA_DATA_EMISSAO,:GUIA_COMPLEMENTAR,:GUIA_VALOR do
        begin
           ENCONTRADA = 'T';
           COMENTARIO_SITUACAO = 'Gerada pela Web';
        end
     END

     if (ENCONTRADA = 'F') then
     begin
        COMENTARIO_SITUACAO = 'Sem Informação';
     end

      /*===== so envia o resultado se nao for encontrada na tabela Sindical =======*/
     if (:ENCONTROU_SINDICAL = 'F') then
     BEGIN
          /*====== se o inicio de cobranca for o memsmo mes e compentecia do vencimento na gera =======*/
        mes = EXTRACT(month from :INICIO_COBRANCA);
        ano = extract(year from :INICIO_COBRANCA);
        MES_ANO_INICIO = mes||ano;

        mes = EXTRACT(month from :GUIA_DATA_VENCIMENTO);
        ano = extract(year from :GUIA_DATA_VENCIMENTO);
        MES_ANO_VENCIMENTO = mes||ano;

         /*==============================
             O mes e ano do inicio da cobranca dever ser menor que o mes e ano do vencimento da guia
             e a data de vencimento da guia deve ser menor que a data atual
         ===============================*/
        --if (mes_ano_inicio < MES_ANO_VENCIMENTO) then
        if ((mes_ano_inicio < MES_ANO_VENCIMENTO) and (GUIA_DATA_VENCIMENTO < CURRENT_DATE)) then
           SUSPEND;
     END

     /*=====================================
        passa para a proxima competencia
     =======================================*/ 
     GUIA_COMPETENCIA = :GUIA_COMPETENCIA + 1;
  END
END^


ALTER PROCEDURE PROC_SITUACAO_MENSALIDADE_ASSOC (
    COD_ASSOCIADO_NULL_P_TODOS INTEGER)
RETURNS (
    INICIO_COBRANCA DATE,
    CODIGO_ASSOCIADO INTEGER,
    NOME VARCHAR(80),
    SEXO VARCHAR(10),
    DATA_CADASTRO DATE,
    DATA_ADMISSAO DATE,
    DATA_DEMISSAO DATE,
    NASCIMENTO DATE,
    COD_TIPO_SOCIO INTEGER,
    TIPO_SOCIO_DESCRICAO VARCHAR(80),
    COD_SITUACAO INTEGER,
    SITUACAO_DESCRICAO VARCHAR(80),
    TOTAL_MENSALIDADE_PAGA INTEGER,
    ULTIMA_MENSALIDADE VARCHAR(10),
    VALOR_ULTIMA_MENSALIDADE NUMERIC(15,2),
    MENSALIDADE_REFERENCIA INTEGER,
    TOTAL_MENS_ATRASADA INTEGER,
    COBRA_MES_INGRESSO VARCHAR(1),
    PAGA_MENSALIDADE VARCHAR(1),
    EMPRESA_ASSOCIADO VARCHAR(14),
    DATA_ULTIMO_STATUS DATE,
    NAO_LIBERA_DISPENSA VARCHAR(1))
AS
declare variable SQL varchar(1000);
declare variable REFERENCIA varchar(10);
declare variable ANO varchar(10);
declare variable MES varchar(10);
declare variable PAGA_MENSALIDADE1 varchar(1);
declare variable BOLETOS_ATRADADOS integer;
declare variable DATA_PAGAMENTO date;
declare variable DATA_VENCIMENTO date;
declare variable QTE_ARRECACAO_ASSOCIADOS integer;
begin
     /*==========================
      VERIFICA SE ESTA CONFIGURADO PARA COBRAR O MES INGRESSO
      COBRAR O MES DO CADASTRO
     ===========================*/
   select CONFIGURACAO_ASSOCIADO.COBRAR_MES_INGRESSO
   from CONFIGURACAO_ASSOCIADO
   into :COBRA_MES_INGRESSO;

   /*===========================================
      Monta a sql para buscar os dados do associado
      Se for passado o codigo do associado pega somente ele
      Se for psssado o codigo Null pega de todos os associados
   =============================================*/
   sql = '';
   SQL = :SQL ||'  select  ASSOCIADO.CODIGO';
   SQL = :SQL ||'        , ASSOCIADO.NOME';
   SQL = :SQL ||'          , ASSOCIADO.SEXO';
   SQL = :SQL ||'          , ASSOCIADO.DATACADASTRO';
   sql = :SQL ||'          , ASSOCIADO.DATAADMISSAO';
   sql = :SQL ||'          , ASSOCIADO.DATADEMISSAO';
   sql = :SQL ||'          , ASSOCIADO.NASCIMENTO';
   sql = :SQL ||'          , ASSOCIADO.INICIO_COBRANCA';
   sql = :SQL ||'          , ASSOCIADO.EMPRESA';
    
   sql = :SQL ||'          , TIPOSOCIO.DESCRICAO as TIPO_SOCIO_DESCRICAO';
   sql = :SQL ||'          , TIPOSOCIO.CODIGO as COD_TPO_SOCIO';
   sql = :SQL ||'          , SITUACAO.DESCRICAO as SITUACAO_DESCRICAO';
   sql = :SQL ||'          , SITUACAO.CODIGO as COD_SITUACAO';
    
   sql = :SQL ||'          , SITUACAO.MENSALIDADE';
   sql = :SQL ||'          , TIPOSOCIO.MENSALIDADE';
   sql = :SQL ||'          , TIPOSOCIO.NAO_LIBERA_DISPENSA';
   sql = :SQL ||'  from ASSOCIADO';
   sql = :SQL ||'     left join TIPOSOCIO on TIPOSOCIO.CODIGO = ASSOCIADO.TIPOASSOCIADO';
   sql = :SQL ||'     left join SITUACAO on SITUACAO.CODIGO = ASSOCIADO.STATUS';

   /*========== verifica se foi passado o codigo do associado ==================*/
   if (COD_ASSOCIADO_NULL_P_TODOS is NOT null) then
      sql = :SQL ||' where ASSOCIADO.CODIGO = '|| cast(COD_ASSOCIADO_NULL_P_TODOS as varchar(20));

   for
      EXECUTE STATEMENT SQL
     into :CODIGO_ASSOCIADO , :NOME , :SEXO, :DATA_CADASTRO, :DATA_ADMISSAO, :DATA_DEMISSAO,
          :NASCIMENTO, :INICIO_COBRANCA, :EMPRESA_ASSOCIADO, :TIPO_SOCIO_DESCRICAO, :COD_TIPO_SOCIO, :SITUACAO_DESCRICAO, :COD_SITUACAO
          ,:PAGA_MENSALIDADE, :PAGA_MENSALIDADE1, :NAO_LIBERA_DISPENSA do
   begin
       /*=======================================
        pega a data da ultima mudanca de status
        se a data for nula é pq nao houve mudanca
       ========================================*/
       select max(ASSOCIADO_MUDANCA.DATA)
       from ASSOCIADO_MUDANCA
       where ASSOCIADO_MUDANCA.ASSOCIADO = :CODIGO_ASSOCIADO
       into :DATA_ULTIMO_STATUS;

       /*===========================================
        Verifica se o tipo de associado ou se a SITUACAO
        nao cobra mensalidades.
       ============================================*/
      if ((:PAGA_MENSALIDADE = 'N') or (:PAGA_MENSALIDADE1 = 'N') )  then
         PAGA_MENSALIDADE = 'N';

      /*=======================================
         Monta a referencia da mensalidade atual
         considerando o ano e mes atual
      ==========================================*/
      MES =  cast( extract(month from current_date) as varchar(10));
      ANO =  cast( extract(year from current_date) as varchar(10));

      if (cast(:MES as integer) < 10) then
         mes = '0'||:mes;


      MENSALIDADE_REFERENCIA = :ano||:MES;

      select COUNT(arrecadacao.cod_arrecadacao) from arrecadacao where tabela_relacionada = 'ASSOCIADO'
      INTO:qte_arrecacao_associados;

      if (qte_arrecacao_associados = 0) then
      begin
       /*===================================
       Pega o total de mensalidades ja pagas.
       E a ultima menalidade paga se nao tiver pago nenhuma
       a referencia é a data de cadastro ou a data de inicio de cobranca
       =====================================*/
      select max (ASSOCIATIVA.REFERENCIA)
          , count(ASSOCIATIVA.CODIGO)
      from ASSOCIATIVA
      where ASSOCIATIVA.ASSOCIADO = :CODIGO_ASSOCIADO
      into :ULTIMA_MENSALIDADE, :TOTAL_MENSALIDADE_PAGA ;

      if (:ULTIMA_MENSALIDADE is not null) then
      begin
         ANO = substring(ULTIMA_MENSALIDADE from 1 for 4);
         MES = substring(ULTIMA_MENSALIDADE from 5 for 2);

         if ( cast(:MES as integer) = 12 ) then
         begin
            mes = '01' ;
            ano =  cast(:ano as integer) +1;
         end
         else
         begin
            MES = cast(:MES as integer) + 1;
            if (cast(:MES as integer) < 10) then
               mes = '0'||:mes;
         end
         REFERENCIA = ano||mes;
      end
      else
      begin
         /*===============================
            Se tiver data de inicio de cobranca cadastrado
            a referencia sera o INICIO_COBRANCA senao sera a data de cadastro
         ================================*/
         if (:INICIO_COBRANCA is not null ) then
         begin
            MES =  cast( extract(month from :INICIO_COBRANCA) as varchar(10));
            ANO =  cast( extract(year from :INICIO_COBRANCA) as varchar(10));
         end
         else
         begin
            MES =  cast( extract(month from :DATA_CADASTRO) as varchar(10));
            ANO =  cast( extract(year from :DATA_CADASTRO) as varchar(10));
         end

         if (cast(MES as integer) <= 9  ) then
         begin
            MES = '0'|| MES ;
         end
         REFERENCIA = ano||mes;
      end
      TOTAL_MENS_ATRASADA = 0 ;

      while  ((:REFERENCIA <= MENSALIDADE_REFERENCIA) and (:PAGA_MENSALIDADE = 'S')) do
      begin
          /*=============================
              Se form a mensalidade do mes corrente verifica
              se ja passou do dia 10
          ===============================*/
         if (:REFERENCIA = MENSALIDADE_REFERENCIA) then
         begin
            if ( extract(DAY from CURRENT_DATE) >10  ) then
               TOTAL_MENS_ATRASADA = :TOTAL_MENS_ATRASADA +1;
         end
         else
            TOTAL_MENS_ATRASADA = :TOTAL_MENS_ATRASADA +1;

         ANO = substring(REFERENCIA from 1 for 4);
         MES = substring(REFERENCIA from 5 for 2);

         if ( cast(:MES as integer) = 12 ) then
         begin
            mes = '01' ;
            ano =  cast(:ano as integer) +1;
         end
         else
         begin
            MES = cast(:MES as integer) + 1;
            if (cast(:MES as integer) < 10) then
               mes = '0'||:mes;
         end

         REFERENCIA = :ANO||:MES;
      end

      select associativa.valor
      from ASSOCIATIVA
      where ASSOCIATIVA.ASSOCIADO = :CODIGO_ASSOCIADO AND ASSOCIATIVA.REFERENCIA = :ULTIMA_MENSALIDADE
      into :VALOR_ULTIMA_MENSALIDADE;

       /*==========================================
          Se nao cobrar mes ingresso dimunui uma parcela do atraso
          para simular um MES atrasado
       ==========================================*/
      if (:COBRA_MES_INGRESSO = 'N') then
         TOTAL_MENS_ATRASADA = :TOTAL_MENS_ATRASADA - 1;

       if (TOTAL_MENS_ATRASADA < 0 ) then
          TOTAL_MENS_ATRASADA = 0;

     suspend;


      end
      else
      begin
       /*===================================
       Pega o total de mensalidades ja pagas.
       E a ultima menalidade paga se nao tiver pago nenhuma
       a referencia é a data de cadastro ou a data de inicio de cobranca
       =====================================*/

 
      SELECT first 1 case when ARRECADACAO.COMPLEMENTAR < 10 then
                             ARRECADACAO.COMPETENCIA||'0'||ARRECADACAO.COMPLEMENTAR
                          else
                             ARRECADACAO.COMPETENCIA||ARRECADACAO.COMPLEMENTAR
                     end
      FROM ARRECADACAO , CONFIGURACAO_ASSOCIADO
      WHERE ARRECADACAO.COD_TABELA_RELACIONADA = :CODIGO_ASSOCIADO
         and ARRECADACAO.COD_TIPO_COBRANCA = CONFIGURACAO_ASSOCIADO.COD_TIPO_COBRANCA_MENSALIDADE
         and arrecadacao.TABELA_RELACIONADA = 'ASSOCIADO'

      order by 1 desc
      into :ULTIMA_MENSALIDADE;

      SELECT count(ARRECADACAO.COD_ARRECADACAO)
      FROM ARRECADACAO , CONFIGURACAO_ASSOCIADO
      WHERE ARRECADACAO.COD_TABELA_RELACIONADA = :CODIGO_ASSOCIADO
         and ARRECADACAO.COD_TIPO_COBRANCA = CONFIGURACAO_ASSOCIADO.COD_TIPO_COBRANCA_MENSALIDADE
         and arrecadacao.TABELA_RELACIONADA = 'ASSOCIADO'
         and arrecadacao.DATA_PAGAMENTO is not null
      into :TOTAL_MENSALIDADE_PAGA ;
 
      /*===============================
         Se tiver data de inicio de cobranca cadastrado
         a referencia sera o INICIO_COBRANCA senao sera a data de cadastro
      ================================*/
      if (:INICIO_COBRANCA is not null ) then
      begin
         MES =  cast( extract(month from :INICIO_COBRANCA) as varchar(10));
         ANO =  cast( extract(year from :INICIO_COBRANCA) as varchar(10));
      end
      else
      begin
         MES =  cast( extract(month from :DATA_CADASTRO) as varchar(10));
         ANO =  cast( extract(year from :DATA_CADASTRO) as varchar(10));
      end

     if (cast(:MES as integer) < 10) then
        mes = '0'||:mes;

      REFERENCIA = ano||mes;

      TOTAL_MENS_ATRASADA = 0 ;

      while  ((:REFERENCIA <= MENSALIDADE_REFERENCIA) and (:PAGA_MENSALIDADE = 'S')) do
      begin
          /*========== verifica o pagamento com a competencia e complementar ========*/


         for
            SELECT ARRECADACAO.DATA_PAGAMENTO
                 , ARRECADACAO.DATA_VENCIMENTO
            FROM ARRECADACAO , CONFIGURACAO_ASSOCIADO
            WHERE ARRECADACAO.COD_TABELA_RELACIONADA = :CODIGO_ASSOCIADO
               and ARRECADACAO.COD_TIPO_COBRANCA = CONFIGURACAO_ASSOCIADO.COD_TIPO_COBRANCA_MENSALIDADE
               and arrecadacao.TABELA_RELACIONADA = 'ASSOCIADO'
               and arrecadacao.COMPETENCIA  = substring(:REFERENCIA from 1 for 4)
               and arrecadacao.COMPLEMENTAR = substring(:REFERENCIA from 5 for 2)
         INTO :DATA_PAGAMENTO, :DATA_VENCIMENTO  DO
         begin
            if ( (:DATA_PAGAMENTO is null) and (:DATA_VENCIMENTO < CURRENT_DATE) )  then
               TOTAL_MENS_ATRASADA = :TOTAL_MENS_ATRASADA +1;
         END



         ANO = substring(REFERENCIA from 1 for 4);
         MES = substring(REFERENCIA from 5 for 2);

         if ( cast(:MES as integer) = 12 ) then
         begin
            mes = '01' ;
            ano =  cast(:ano as integer) +1;
         end
         else
         begin
            MES = cast(:MES as integer) + 1;
            if (cast(:MES as integer) < 10) then
               mes = '0'||:mes;
         end

         REFERENCIA = :ANO||:MES;

      END


      select first 1 ARRECADACAO.VALOR_A_PAGAR
      FROM ARRECADACAO , CONFIGURACAO_ASSOCIADO
      WHERE ARRECADACAO.COD_TABELA_RELACIONADA = :CODIGO_ASSOCIADO
         and ARRECADACAO.COD_TIPO_COBRANCA = CONFIGURACAO_ASSOCIADO.COD_TIPO_COBRANCA_MENSALIDADE
         and arrecadacao.TABELA_RELACIONADA = 'ASSOCIADO'
      order by ARRECADACAO.COMPETENCIA||ARRECADACAO.COMPLEMENTAR DESC
      into :VALOR_ULTIMA_MENSALIDADE;

       /*==========================================
          Se nao cobrar mes ingresso dimunui uma parcela do atraso
          para simular um MES atrasado
       ==========================================*/
      if (:COBRA_MES_INGRESSO = 'N') then
         TOTAL_MENS_ATRASADA = :TOTAL_MENS_ATRASADA - 1;

       if (TOTAL_MENS_ATRASADA < 0 ) then
          TOTAL_MENS_ATRASADA = 0;

     suspend;
   end
   end
end^


ALTER PROCEDURE PROC_STATISTICA_PROCESSAMENTO
RETURNS (
    PERIODO VARCHAR(10),
    VALOR_PAGO NUMERIC(15,2),
    VALOR_CREDITO NUMERIC(15,2),
    CONVENIO VARCHAR(10),
    QUANTIDADE INTEGER)
AS
declare variable SQL varchar(5000);
declare variable CONVENIO_RECEBIMENTO varchar(5000);
declare variable MESES varchar(5000);
declare variable ANOS varchar(5000);
begin
   /*=====================================================
    Busca os valores da tabela processamento_detalhes
    Buscando os valores de pagamentos agrupados por mes
   ======================================================*/
  SELECT COALESCE( PARAMETRO_RELATORIO.STRING_1 , '')
       , COALESCE( PARAMETRO_RELATORIO.STRING_2 , '')
       , COALESCE( PARAMETRO_RELATORIO.STRING_3 , '')
  from PARAMETRO_RELATORIO
  into :CONVENIO_RECEBIMENTO, :MESES, :ANOS;


   sql = '';

   if (:MESES <> '' ) then
   begin
      sql = SQL ||' SELECT case when  extract( MONTH FROM PROCESSAMENTO_DETALHES.DATA_CREDITO) < 9 then ';
      sql = SQL ||'                   ''0''|| extract( MONTH FROM PROCESSAMENTO_DETALHES.DATA_CREDITO) ';
      sql = SQL ||'                else ';
      sql = SQL ||'                   extract( MONTH FROM PROCESSAMENTO_DETALHES.DATA_CREDITO) ';
      sql = SQL ||'            end ';
      sql = SQL ||'            ||''/''||';
      sql = SQL ||'            extract ( YEAR FROM PROCESSAMENTO_DETALHES.DATA_CREDITO) ';
    end

   if (:MESES = '' ) then
   begin
      sql = SQL ||' SELECT cast( extract ( YEAR FROM PROCESSAMENTO_DETALHES.DATA_CREDITO) as VARCHAR(5)) ';
   end

   sql = SQL ||'         , sum(PROCESSAMENTO_DETALHES.VALOR_PAGAMENTO) ';
   sql = SQL ||'         , sum(PROCESSAMENTO_DETALHES.VALOR_CREDITO) ';
   sql = SQL ||'         , PROCESSAMENTO_DETALHES.CONVENIO ';
   sql = SQL ||'         , count(PROCESSAMENTO_DETALHES.COD_PROC_DETALHE) ';
      
   sql = SQL ||'    from PROCESSAMENTO_DETALHES ';
   sql = SQL ||'    where PROCESSAMENTO_DETALHES.DATA_CREDITO is not null ';

   if (:CONVENIO_RECEBIMENTO <> '') then
      sql = SQL ||'    and PROCESSAMENTO_DETALHES.CONVENIO = ' || :CONVENIO_RECEBIMENTO;

   if (:MESES <> '') then
      sql = SQL ||'    and EXTRACT(MONTH FROM PROCESSAMENTO_DETALHES.DATA_CREDITO)  in ('|| :MESES ||')';

   if (:ANOS <> '') then
      sql = SQL ||'    and EXTRACT(YEAR FROM PROCESSAMENTO_DETALHES.DATA_CREDITO)  in ('|| :ANOS ||')';

   sql = SQL ||'    group by 1, PROCESSAMENTO_DETALHES.CONVENIO' ;

   FOR
         EXECUTE STATEMENT SQL

      into :PERIODO, :VALOR_PAGO, :VALOR_CREDITO, :CONVENIO, :quantidade do
        suspend;
end^


ALTER PROCEDURE PROC_TABELA_RELACIONADA (
    CPF_CNPJ VARCHAR(14))
RETURNS (
    NOME_RAZAOSOCIAL VARCHAR(200),
    COD_TABELA_RELACIONADA VARCHAR(80),
    TABELA_RELACIONADA VARCHAR(80),
    CPFCNPJ VARCHAR(14),
    ENDERECO_LOGRADOURO VARCHAR(80),
    ENDERECO_NUMERO VARCHAR(80),
    ENDERECO_COMPLEMENTO VARCHAR(80),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF CHAR(2),
    ENDERECO_CEP CHAR(8),
    CNAE VARCHAR(20))
AS
declare variable ENCONTROU varchar(1);
begin
    /*==================== procura na tabela de entidade sindical*/
   ENCONTROU = 'F';

   select ENTIDADE_SINDICAL.COD_ENTIDADE_SINDICAL
        , 'ENTIDADE_SINDICAL'
        , ENTIDADE_SINDICAL.RAZAOSOCIAL
        , ENTIDADE_SINDICAL.CNPJ
        , ENTIDADE_SINDICAL.ENDERECO_LOGRADOURO
        , ENTIDADE_SINDICAL.ENDERECO_NUMERO
        , ENTIDADE_SINDICAL.ENDERECO_COMPLEMENTO
        , ENTIDADE_SINDICAL.ENDERECO_BAIRRO
        , ENTIDADE_SINDICAL.ENDERECO_CIDADE
        , ENTIDADE_SINDICAL.ENDERECO_UF
        , ENTIDADE_SINDICAL.ENDERECO_CEP
        , 'T'


   from ENTIDADE_SINDICAL
   where ENTIDADE_SINDICAL.CNPJ = :CPF_CNPJ
   into :COD_TABELA_RELACIONADA, :TABELA_RELACIONADA, :NOME_RAZAOSOCIAL,
        :CPFCNPJ, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO , :ENDERECO_BAIRRO,
        :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENCONTROU;
   if (:ENCONTROU = 'T') then
   begin
      suspend;
      exit;
   end

    /*=============== procura na table de associado ===============*/
   select ASSOCIADO.CODIGO
        , 'ASSOCIADO'
        , ASSOCIADO.NOME
        , ASSOCIADO.CPF
        , ASSOCIADO.ENDERECO_LOGRADOURO
        , ASSOCIADO.ENDERECO_NUMERO
        , ASSOCIADO.ENDERECO_COMPLEMENTO
        , ASSOCIADO.BAIRRO
        , ASSOCIADO.CIDADE
        , ASSOCIADO.UF
        , ASSOCIADO.CEP
        , 'T'
   
   
   from ASSOCIADO
   where ASSOCIADO.CPF = :CPF_CNPJ
   into :COD_TABELA_RELACIONADA, :TABELA_RELACIONADA, :NOME_RAZAOSOCIAL,
        :CPFCNPJ, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO ,
        :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :ENCONTROU;

   if (:ENCONTROU = 'T') then
   begin
      suspend;
      exit;
   end

    /*=============== procura na table de empresa ===============*/

   select empresa.cnpj
        , 'EMPRESA'
        , EMPRESA.razaosocial
        , EMPRESA.CNPJ
        , EMPRESA.ENDERECO_LOGRADOURO
        , EMPRESA.ENDERECO_NUMERO
        , EMPRESA.ENDERECO_COMPLEMENTO
        , EMPRESA.ENDERECO_BAIRRO
        , EMPRESA.ENDERECO_CIDADE
        , EMPRESA.ENDERECO_UF
        , EMPRESA.ENDERECO_CEP
        , EMPRESA.CNAE
        , 'T'
   
   from EMPRESA
   where EMPRESA.CNPJ = :CPF_CNPJ
   into :COD_TABELA_RELACIONADA, :TABELA_RELACIONADA, :NOME_RAZAOSOCIAL,
        :CPFCNPJ, :ENDERECO_LOGRADOURO, :ENDERECO_NUMERO, :ENDERECO_COMPLEMENTO ,
        :ENDERECO_BAIRRO, :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :CNAE, :ENCONTROU;

   if (:ENCONTROU = 'T') then
   begin
      suspend;
      exit;
   end

end^


ALTER PROCEDURE PROC_TRATAR_GUIA_ESTORNO
RETURNS (
    COD_ARRECADACAO_ESTORNO NUMERIC(15,0),
    COD_ARRECADACAO NUMERIC(15,0),
    DATA_VENCIMENTO DATE,
    VALOR_A_PAGAR NUMERIC(15,2),
    VALOR_CREDITADO NUMERIC(15,2),
    TABELA_RELACIONADA VARCHAR(80),
    COD_TABELA_RELACIONADA VARCHAR(80),
    COD_TIPO_COBRANCA INTEGER)
AS
begin
  /*===================================
       seleciona as arreadacoes que estao marcadas como estorno
       RECEBIMENTO_BANCARIO_COD_OCORRE = 9
       as guias de estorno deve estar relacionada a alguma guia que ja foi recebida
       esta procedure localiza a guia que esta relacionada ao estoro
       e preenche o campo ARRECADACAO.COD_TIPO_ERRO_PROCESSAMENTO

       na sequencia marcar a guia com informação de estorno como excluída.. ja que ela na gera movimentacao

  ==================================== */

   for
      select ARRECADACAO.COD_ARRECADACAO
           , ARRECADACAO.DATA_VENCIMENTO
           , ARRECADACAO.VALOR_A_PAGAR
           , ARRECADACAO.VALOR_CREDITADO
           , ARRECADACAO.TABELA_RELACIONADA
           , ARRECADACAO.COD_TABELA_RELACIONADA
           , ARRECADACAO.COD_TIPO_COBRANCA
      from ARRECADACAO
      where arrecadacao.RECEBIMENTO_BANCARIO_COD_OCORRE = 9
        and ARRECADACAO.EXCLUIDA is NULL
      into :COD_ARRECADACAO_ESTORNO, :DATA_VENCIMENTO, :VALOR_A_PAGAR, :VALOR_CREDITADO, :TABELA_RELACIONADA, :COD_TABELA_RELACIONADA
           ,:COD_TIPO_COBRANCA do
      begin
         FOR
            select first 1 ARRECADACAO.COD_ARRECADACAO
            from arrecadacao
            where ARRECADACAO.COD_ARRECADACAO       <> :COD_ARRECADACAO_ESTORNO
              and ARRECADACAO.DATA_VENCIMENTO        = :DATA_VENCIMENTO
              and ARRECADACAO.VALOR_A_PAGAR          = :VALOR_A_PAGAR
              and ARRECADACAO.VALOR_CREDITADO        = :VALOR_CREDITADO
              and ARRECADACAO.TABELA_RELACIONADA     = :TABELA_RELACIONADA
              and ARRECADACAO.COD_TABELA_RELACIONADA = :COD_TABELA_RELACIONADA
              and ARRECADACAO.COD_TIPO_COBRANCA      = :COD_TIPO_COBRANCA
              and ( ARRECADACAO.EXCLUIDA IS NULL OR ARRECADACAO.EXCLUIDA = 'F')

              INTO :COD_ARRECADACAO DO
          begin
             update arrecadacao set arrecadacao.COD_TIPO_ERRO_PROCESSAMENTO = 9
             where ARRECADACAO.COD_ARRECADACAO = :COD_ARRECADACAO;
          end

          update arrecadacao set arrecadacao.EXCLUIDA = 'T'
          where arrecadacao.COD_ARRECADACAO = :COD_ARRECADACAO_ESTORNO;

          suspend;
      end


end^


ALTER PROCEDURE PROC_VERIFICA_ACESSO (
    NUM_CARTEIRA VARCHAR(44))
RETURNS (
    NOME VARCHAR(80),
    MATRICULA INTEGER,
    CATEGORIA VARCHAR(200),
    MOTIVO VARCHAR(80),
    BLOQUEADO VARCHAR(1),
    FOTO VARCHAR(80))
AS
declare variable STATUS varchar(80);
declare variable ACESSO_CLUBE varchar(1);
declare variable MENSALIDADES_ATRASADAS integer;
begin
   MATRICULA = 0;


   /*========== verifica se é um convite ================*/
   FOR
      select  CONVITE.CODIGO
             ,CONVITE.NOME
             ,'Convite'
      from CONVITE
      where CONVITE.CODIGOBARRAS = :NUM_CARTEIRA
      into :MATRICULA, :NOME, :CATEGORIA do
   begin
      BLOQUEADO = 'F';
      MOTIVO = 'Acesso Liberado';
      suspend;
      exit;
   end


  /*========= verifica se a carteira é de um associado =========*/
     select  ASSOCIADO.CODIGO
           , ASSOCIADO.NOME
           , ASSOCIADO.FOTO
           , 'Associado'
           , SITUACAO.CLUBE
           , SITUACAO.DESCRICAO
     from ASSOCIADO
        inner join SITUACAO on SITUACAO.CODIGO = ASSOCIADO.STATUS
     where associado.COD_BARRA_CARTEIRA = :NUM_CARTEIRA
     into :MATRICULA, :NOME, :FOTO, :CATEGORIA, :ACESSO_CLUBE, status;

   /*========= verifica se a carteira é de um dependente =========*/
     select  ASSOCIADO.CODIGO
           , dependente.NOME
           , dependente.FOTO
           , 'Dependente'
           , SITUACAO.CLUBE
           , SITUACAO.DESCRICAO
     from dependente
        inner join associado on ASSOCIADO.CODIGO = DEPENDENTE.ASSOCIADO
        inner join SITUACAO on SITUACAO.CODIGO = ASSOCIADO.STATUS
     where DEPENDENTE.COD_BARRA_CARTEIRA = :NUM_CARTEIRA
     into :MATRICULA, :NOME, :FOTO, :CATEGORIA, :ACESSO_CLUBE, status;

     if (:MATRICULA = 0) then
     begin
        BLOQUEADO = 'T';
        MOTIVO = 'Carteira não encontrada';
        suspend;
        exit;
     end

     /*================ verifica os pagamentos ==========*/
     SELECT PROC_SITUACAO_MENSALIDADE_ASSOC.TOTAL_MENS_ATRASADA
     from PROC_SITUACAO_MENSALIDADE_ASSOC(:MATRICULA)
     into :MENSALIDADES_ATRASADAS;

     if (MENSALIDADES_ATRASADAS >= 3) then
     begin
        BLOQUEADO = 'T';
        MOTIVO = 'Inadimplência '|| MENSALIDADES_ATRASADAS || ' em atraso';
        suspend;
        exit;
     end

     if (:ACESSO_CLUBE = 'N') then
     begin
        BLOQUEADO = 'T';
        MOTIVO = 'Status '|| :STATUS ||' não permite acesso ao clube';
        suspend;
        exit;
     end

     BLOQUEADO = 'F';
     MOTIVO = 'Acesso Liberado';
     suspend;
end^


ALTER PROCEDURE PROC_VERIFICA_DISPENSA_RECOLH (
    COD_ASSOCIADO INTEGER,
    COMPETENCIA VARCHAR(10))
RETURNS (
    VALOR_ZERADO VARCHAR(1),
    PROXIMA_COMPETENCIA VARCHAR(10))
AS
declare variable BAIXAR_ZERADO varchar(1);
declare variable COMPETENCIA_DIPENSA varchar(10);
declare variable MES varchar(10);
declare variable ANO varchar(10);
declare variable PERIODO_DISPENSA date;
declare variable CODIGO integer;
declare variable COD_USUARIO integer;
declare variable COMPETENCIA_EXISTE integer;
begin

  PROXIMA_COMPETENCIA = COMPETENCIA;
  VALOR_ZERADO = 'F';

 
  select CONFIGURACAO_ASSOCIADO.DISPENSA_DE_MENALIDADE_ZERADA
  from CONFIGURACAO_ASSOCIADO
  into : BAIXAR_ZERADO;

 
  for
     SELECT DISPENSA_RECOLHIMENTO.PERIODO_DISPENSA
     from DISPENSA_RECOLHIMENTO
     order by DISPENSA_RECOLHIMENTO.PERIODO_DISPENSA
     into :PERIODO_DISPENSA do
   begin
      ano = EXTRACT(year from  :PERIODO_DISPENSA);
      mes = EXTRACT(MONTH from :PERIODO_DISPENSA);

      IF (CAST(MES AS INTEGER) <= 9  ) THEN
      BEGIN
         MES = '0'|| CAST(CAST(MES AS INTEGER)AS VARCHAR (10)) ;
      END

      COMPETENCIA_DIPENSA = :ano||:mes;

       /*=========================================
         Se a compentencia da mensalidade for igual a
         compentencia da dispensa incrementa o mes da
         proxima mensalidade
       ============================================*/
      if (:COMPETENCIA = :COMPETENCIA_DIPENSA ) then
      begin
         IF (mes = 12) THEN
         BEGIN
            mes = '1';
            ano =  CAST((CAST(:ANO AS INTEGER) +1) AS VARCHAR(10));
         END
         ELSE
         IF (mes < 12 ) THEN
         BEGIN
            MES = CAST((CAST(:MES AS INTEGER)+1 ) AS VARCHAR(10));
         END

         IF (CAST(MES AS INTEGER) <= 9  ) THEN
         BEGIN
            MES = '0'|| CAST(CAST(MES AS INTEGER)AS VARCHAR (10)) ;
         END

         PROXIMA_COMPETENCIA = :ano||:mes ;

        /*======================================
          se o ssitema estiver configurado para baixar com valor zero
          as mensalidades dispensadas
        ========================================*/
        if (:BAIXAR_ZERADO = 'T') then
        begin
           VALOR_ZERADO = 'T';
           PROXIMA_COMPETENCIA = :COMPETENCIA;
        end
      end
   end

  suspend;
end^


ALTER PROCEDURE PROC_WS_STATISTICA
RETURNS (
    QTD_ERRO BIGINT,
    QTD_REGISTRO_WEB BIGINT,
    QTD_REGISTRO_LOCAL BIGINT,
    QTD_REGISTRO BIGINT)
AS
begin
  /*================= quantidade de titulos com erros no registro================== */
   select coalesce ( count( DISTINCT ( WEB_SERVICE_ERROS.COD_ARRECADACAO) ) , 0 )
   from WEB_SERVICE_ERROS
   into : QTD_ERRO;

   /*============== qtd de*/
   SELECT COALESCE ( COUNT (GUIAS_DA_WEB.CODIGO) , 0 )
   from GUIAS_DA_WEB
   where GUIAS_DA_WEB.WS_COD_RETORNO = '0'
   into :QTD_REGISTRO_WEB;

   SELECT COALESCE( COUNT (ARRECADACAO.COD_ARRECADACAO) , 0 )
   from ARRECADACAO
   where ARRECADACAO.WS_COD_RETORNO = '0'
   into :QTD_REGISTRO_LOCAL;

   QTD_REGISTRO = QTD_REGISTRO_LOCAL + QTD_REGISTRO_WEB;

  suspend;
end^


ALTER PROCEDURE PROX_MENSALIDADE_EMPRESA (
    CONDICAO_SQL_WHERE VARCHAR(3000))
RETURNS (
    CODIGO INTEGER,
    NOME VARCHAR(80),
    TELEFONE1 VARCHAR(10),
    DATACADASTRO DATE,
    DATAADMISSAO DATE,
    NASCIMENTO DATE,
    TIPOASSOCIADO INTEGER,
    EMPRESA_ASSOCIADO VARCHAR(14),
    CNPJ VARCHAR(14),
    RAZAOSOCIAL VARCHAR(80),
    CONTATO VARCHAR(80),
    JF VARCHAR(1),
    ENDERECO VARCHAR(600),
    ENDERECO_BAIRRO VARCHAR(80),
    ENDERECO_CIDADE VARCHAR(80),
    ENDERECO_UF VARCHAR(2),
    ENDERECO_CEP VARCHAR(8),
    CNAE VARCHAR(18),
    NUMERO_EMPREGADOS INTEGER,
    VALOR_MENSALIDADE NUMERIC(15,2),
    PROXIMA_MENSALIDDE VARCHAR(10),
    CONTADOR VARCHAR(14),
    NAO_LIBERA_DISPENSA VARCHAR(1),
    USA_ULTIMO_VALOR_MENSALIDADE VARCHAR(1),
    ULTIMO_VALOR_MENSALIDADE NUMERIC(15,2),
    ULTIMA_MENSALIDADE VARCHAR(10))
AS
declare variable INICIO_COBRANCA varchar(10);
declare variable DATA_MUDANCA_STATUS date;
declare variable QTD_DEPENENTE integer;
declare variable ANO varchar(10);
declare variable MES varchar(10);
declare variable REFERENCIA_PGTO_SOCIAL varchar(10);
declare variable REFERENCIA_PGTO varchar(10);
declare variable ABREVIATURA varchar(80);
declare variable COBRAR_MES_INGRESSO varchar(1);
declare variable STATUS_AFETA_PAGAMENTO varchar(1);
declare variable SQL varchar(1000);
declare variable VALOR_ZERADO varchar(1);
BEGIN

   /*=========== pega no sigla do sindicato ==============*/
   SELECT REGISTRO.ABREVIATURA
   FROM REGISTRO
   INTO :ABREVIATURA;

   /*========== Seleciona se é para cobrar mes ingresso ou se o status afeta pagameto */
 
   SELECT configuracao_associado.cobrar_mes_ingresso
        , configuracao_associado.status_afeta_pagamento
   FROM configuracao_associado
   INTO :COBRAR_MES_INGRESSO , :STATUS_AFETA_PAGAMENTO;

 
  /*======== seleciona os associado  =======*/
   SQL = '';
   SQL = :SQL || ' SELECT   ASSOCIADO.CODIGO ';
   SQL = :SQL || '        , ASSOCIADO.NOME ';
   SQL = :SQL || '        , ASSOCIADO.TELEFONE1';
   SQL = :SQL || '        , ASSOCIADO.DATACADASTRO';
   SQL = :SQL || '        , ASSOCIADO.DATAADMISSAO';
   SQL = :SQL || '        , ASSOCIADO.NASCIMENTO';
   SQL = :SQL || '        , ASSOCIADO.TIPOASSOCIADO';
   SQL = :SQL || '        , ASSOCIADO.EMPRESA';
   SQL = :SQL || '        , cast(ASSOCIADO.INICIO_COBRANCA as varchar (10))';
   SQL = :SQL || '        , TIPOSOCIO.NAO_LIBERA_DISPENSA';
   SQL = :SQL || '        , TIPOSOCIO.USA_ULTIMO_VALOR_MENSALIDADE';

   SQL = :SQL || '  FROM  ASSOCIADO';
   SQL = :SQL || '    INNER JOIN SITUACAO  ON (SITUACAO.CODIGO = ASSOCIADO.STATUS AND SITUACAO.MENSALIDADE = '||'''S'''||')';
   SQL = :SQL || '    INNER JOIN tipoSociO ON (TIPOSOCIO.CODIGO = ASSOCIADO.tipoassociado AND TIPOSOCIO.MENSALIDADE = '||'''S'''||')';

    /*=========== se for passada uma condicao para a consulta ==========*/

   if (:CONDICAO_SQL_WHERE IS NOT NULL) then
      SQL = :SQL || ' ' || :CONDICAO_SQL_WHERE;

  FOR
     EXECUTE STATEMENT :SQL
     into :CODIGO, :NOME, :TELEFONE1, :DATACADASTRO, :DATAADMISSAO,
           :NASCIMENTO , :TIPOASSOCIADO, :EMPRESA_ASSOCIADO, :INICIO_COBRANCA, :NAO_LIBERA_DISPENSA, :USA_ULTIMO_VALOR_MENSALIDADE  do
   BEGIN
      if (:NAO_LIBERA_DISPENSA IS NULL) then
        NAO_LIBERA_DISPENSA='F';

      if (:USA_ULTIMO_VALOR_MENSALIDADE IS NULL) then
        USA_ULTIMO_VALOR_MENSALIDADE='F';


      /*==========================================================
        Zera as variaveis  da empresa para o caso do associado nao ter
        empresa vinculada
      ===========================================================*/
      CNPJ              = '';
      RAZAOSOCIAL       = '';
      CONTATO           = '';
      JF                = '';
      ENDERECO          = '';
      ENDERECO_BAIRRO   = '';
      ENDERECO_CIDADE   = '';
      ENDERECO_UF       = '';
      ENDERECO_CEP      = '';
      CNAE              = '';
      NUMERO_EMPREGADOS = 0;
      contador          = '';
  
       /*======== seleciona as empresas do associado ========= */
        SELECT EMPRESA.CNPJ,
               EMPRESA.RAZAOSOCIAL,
               EMPRESA.CONTATO,
               EMPRESA.JF,
               EMPRESA.ENDERECO_TIPOENDERECO || ' ' || EMPRESA.ENDERECO_LOGRADOURO || ' '
                   ||EMPRESA.ENDERECO_NUMERO || ' ' ||EMPRESA.ENDERECO_COMPLEMENTO AS Endereco,
               EMPRESA.ENDERECO_BAIRRO,
               EMPRESA.ENDERECO_CIDADE,
               EMPRESA.ENDERECO_UF,
               EMPRESA.ENDERECO_CEP,
               EMPRESA.CNAE,
               EMPRESA.NUMERO_EMPREGADOS,
               EMPRESA.contador
        FROM EMPRESA
        WHERE EMPRESA.CNPJ = :EMPRESA_ASSOCIADO
        INTO :CNPJ , :RAZAOSOCIAL, :CONTATO , :JF, :ENDERECO,:ENDERECO_BAIRRO,
             :ENDERECO_CIDADE, :ENDERECO_UF, :ENDERECO_CEP, :CNAE, :NUMERO_EMPREGADOS, :contador;
  
  
        /*======= pega a ultima mensalidade do associado */
        SELECT MAX(social_associados.mensalidade)
        FROM social_associados
        WHERE social_associados.associado = :CODIGO
        INTO :REFERENCIA_PGTO_SOCIAL ;

        FOR
           SELECT MAX(ASSOCIATIVA.REFERENCIA)
           FROM ASSOCIATIVA
           WHERE ASSOCIATIVA.ASSOCIADO = :CODIGO
           INTO :REFERENCIA_PGTO DO
        BEGIN
  
           PROXIMA_MENSALIDDE = '';
            /*========= se a referencia do pagamento for nula
                       é pq nao existe pagamento lancado.1º lancamento
                       O primeiro lancamento é basedao na data de cadsatro =========== */
            IF (:REFERENCIA_PGTO_SOCIAL IS NOT NULL ) THEN
            BEGIN
              IF (:REFERENCIA_PGTO IS NULL) THEN
              BEGIN
                REFERENCIA_PGTO = :REFERENCIA_PGTO_SOCIAL;
              END
              else
              if (:REFERENCIA_PGTO_SOCIAL > :REFERENCIA_PGTO) then
              begin
                REFERENCIA_PGTO = :REFERENCIA_PGTO_SOCIAL;
              end
            END

            ULTIMA_MENSALIDADE=REFERENCIA_PGTO;

            IF (:REFERENCIA_PGTO IS NULL ) THEN
            BEGIN
               MES =  EXTRACT(MONTH FROM :DATACADASTRO);
               ANO =  EXTRACT(YEAR FROM  :DATACADASTRO);
  
               /*======= Cobrar menslidade do mes do cadastro ( mes ingresso ) ====== */
               IF (:COBRAR_MES_INGRESSO = 'N') THEN
               BEGIN
                  IF (mes = 12) THEN
                  BEGIN
                     mes = '1';
                     ano =  CAST((CAST(:ANO AS INTEGER) +1) AS VARCHAR(10));
                  END
                  ELSE
                  IF (mes < 12 ) THEN
                  BEGIN
                     MES = CAST((CAST(:MES AS INTEGER)+1 ) AS VARCHAR(10));
                  END
               END
  
               IF (CAST(MES AS INTEGER) <= 9  ) THEN
               BEGIN
                  MES = '0'|| CAST(CAST(MES AS INTEGER)AS VARCHAR (10)) ;
               END
  
               PROXIMA_MENSALIDDE = ano||MES;
            END
  
            IF ( (REFERENCIA_PGTO IS NOT NULL) )THEN
            BEGIN
               ANO = SUBSTRING(:REFERENCIA_PGTO FROM 1 FOR 4);
               MES = SUBSTRING(:REFERENCIA_PGTO FROM 5 FOR 2);
  
               IF (CAST(MES AS INTEGER) <= 9  ) THEN
               BEGIN
                  MES = '0'||CAST(CAST(MES AS INTEGER)AS VARCHAR (10)) ;
               END
      
               IF (MES = 12) THEN
               BEGIN
                  mes = '1';
                  ano =  CAST((CAST(:ANO AS INTEGER) +1) AS VARCHAR(10));
               END
               ELSE
               IF (MES < 12) THEN
               BEGIN
                  MES = CAST((CAST(:MES AS INTEGER) +1) AS VARCHAR(10));
               END
  
               IF ((CAST(MES AS INTEGER) <= 9 )) THEN
               BEGIN
                  MES = '0'||:MES;
               END
  
               IF (proxima_mensalidde = '' ) THEN
                  PROXIMA_MENSALIDDE = ano||MES;
           END
        END /*======== fim pega a ultima mensalidade do associado */
  
        /*============ pega o valor da mensalidade ========*/

        FOR
           SELECT MENSALIDADE.VALOR
           FROM MENSALIDADE
           WHERE MENSALIDADE.TIPOASSOCIADO = :TIPOASSOCIADO
           INTO :VALOR_MENSALIDADE DO
        BEGIN
           if (ULTIMA_MENSALIDADE IS NOT NULL) then
           BEGIN
               FOR
                   SELECT associativa.valor
                   FROM associativa
                   WHERE associativa.associado=:CODIGO AND associativa.referencia=:ULTIMA_MENSALIDADE
                   INTO :ULTIMO_VALOR_MENSALIDADE DO
               BEGIN
               if (:ULTIMO_VALOR_MENSALIDADE IS NULL) then
                 ULTIMO_VALOR_MENSALIDADE=0;
               END
           END
           ELSE
                 ULTIMO_VALOR_MENSALIDADE=0;

           IF (:ABREVIATURA = 'SECPC') THEN
           BEGIN
  
              /*===== pega a quantidade de dependentes */
             SELECT COUNT(DEPENDENTE.CODIGO)
              FROM DEPENDENTE
              WHERE DEPENDENTE.ASSOCIADO = :CODIGO
              INTO :QTD_DEPENENTE;
  
              IF (QTD_DEPENENTE IS NULL) THEN
              BEGIN
                 QTD_DEPENENTE = 0;
              END
              VALOR_MENSALIDADE = VALOR_MENSALIDADE * (QTD_DEPENENTE +1 );
  
  
              /*========================================
                 Foi removida a regra para calcular as mensalidade dos associados de poços de caldas comercio 11-12-08 - daniel azevedo ================
              ======================================*/
             /*
             IF (datacadastro <= '30.09.2002')  THEN
              BEGIN
                 IF (QTD_DEPENENTE = 0 ) THEN
                 BEGIN
                    VALOR_MENSALIDADE = 0;
                 END
              END
  
              IF ((datacadastro > '30.09.2002') AND (datacadastro < '01.03.2006')) THEN
              BEGIN
                 VALOR_MENSALIDADE = VALOR_MENSALIDADE * QTD_DEPENENTE;
              END
  
              IF (datacadastro >= '01.03.2006') THEN
              BEGIN
                 VALOR_MENSALIDADE = VALOR_MENSALIDADE * (QTD_DEPENENTE +1 );
              END
  
              */
  
           END   --==== fim da abreviatura = SECPC
  
        END
        /*=========== se for de Poços de Caldas =========*/
  
        if (INICIO_COBRANCA is not null) then
        begin
           MES = SUBSTRING(:INICIO_COBRANCA FROM 6 FOR 2);
           ANO = SUBSTRING(:INICIO_COBRANCA FROM 1 FOR 4);
  
           IF ((CAST(MES AS INTEGER) <= 9 )) THEN
           BEGIN
              MES = '0'|| CAST(CAST(MES AS INTEGER)AS VARCHAR (10)) ;
           END
  
           INICIO_COBRANCA = :ANO || :MES;
           if (INICIO_COBRANCA > PROXIMA_MENSALIDDE) then
              PROXIMA_MENSALIDDE = INICIO_COBRANCA;
        end

        if (USA_ULTIMO_VALOR_MENSALIDADE = 'T' and ULTIMO_VALOR_MENSALIDADE > 0) then
          VALOR_MENSALIDADE=ULTIMO_VALOR_MENSALIDADE;

       /*=========================================
          Verifica se a competencia esta na tabela de Dispensa de recolhimento
          Se estiver nao gera a proxima mensalidade
       ===========================================*/
       if (:nao_libera_dispensa = 'F') then
       BEGIN
        SELECT PROC_VERIFICA_DISPENSA_RECOLH.PROXIMA_COMPETENCIA
            , PROC_VERIFICA_DISPENSA_RECOLH.VALOR_ZERADO
        from PROC_VERIFICA_DISPENSA_RECOLH(:CODIGO, :PROXIMA_MENSALIDDE)
        into :PROXIMA_MENSALIDDE, :VALOR_ZERADO;

        if (:VALOR_ZERADO = 'T') then
        begin
           VALOR_MENSALIDADE = 0;
        end
       end
       SUSPEND;
   END/*====== Fim da selecao de socios q pagam na empresa*/
END^



SET TERM ; ^



/******************************************************************************/
/***                              Descriptions                              ***/
/******************************************************************************/

DESCRIBE TABLE ASSISTENCIAL
'excluir';

DESCRIBE TABLE BORDERO
'deletar';

DESCRIBE TABLE BORDERO_ITENS
'deletar';

DESCRIBE TABLE CAIXA_MOVIMENTACAO
'deletar';

DESCRIBE TABLE CAIXA_SAIDA
'deletar';

DESCRIBE TABLE CAIXA_USUARIOS_LIBERADOS
'deletar';

DESCRIBE TABLE FILIAL
'FILIAL';



/******************************************************************************/
/***                              Descriptions                              ***/
/******************************************************************************/



/******************************************************************************/
/***                          Fields descriptions                           ***/
/******************************************************************************/

DESCRIBE FIELD COD_CONVENIO_COBRANCA TABLE ARRECADACAO
'codigo do convenio de cobranca';

DESCRIBE FIELD COD_LOCAL_EMISSAO TABLE ARRECADACAO
'Local onde a guia foi emitida,
Local, Internet , Terceiros';

DESCRIBE FIELD COD_USUARIO_EMISSAO TABLE ARRECADACAO
'usuario que fez o cadastro da guia';

DESCRIBE FIELD COD_USUARIO_PAGAMENTO TABLE ARRECADACAO
'codigo do usuario que fez o recebimento da guia';

DESCRIBE FIELD COD_FORMA_PAGAMENTO TABLE ARRECADACAO
'se a guia foi paga com
Dinheiro
Cheque
Deposito';

DESCRIBE FIELD COD_CAIXA_MOVIMENTACAO TABLE ARRECADACAO
'codigo da movimentacao do caixa';

DESCRIBE FIELD COD_FILIAL_PAGAMENTO TABLE ARRECADACAO
'codigo da filial onde foi feito o recebimento da guia';

DESCRIBE FIELD COD_PADRAO_BANCARIO TABLE ARRECADACAO
'codigo do padrao bancario
usado para saber qual layout usar para processar retornos';

DESCRIBE FIELD COD_CONTA_BANCARIA_MOVIMENTO TABLE ARRECADACAO
'conta bancaria que foi utilizada para a realização do movimento de pagamento';

DESCRIBE FIELD COD_TIPO_COBRANCA TABLE ARRECADACAO
'informa qual é o tipo da cobranca
Sindical
FAA menal
FAA Anual
Plano Basico etc';

DESCRIBE FIELD COD_ARRECADACAO_COMP_VALOR TABLE ARRECADACAO
'indica q a guia é um complemento e neste campo colocar qual é o codigo da
arrecadacao que fez o complemento. EX
Guia codigo: 145 valor: 100,00 complemento_da_guia: null
Guia codigo: 541 valor:  15,00 complemento_da_guia: 145';

DESCRIBE FIELD COD_FORMA_ARRECADACAO TABLE ARRECADACAO
'forma como a guia foi arrecadada
EX: Casa Loterica, HOME BANKING, Internet....';

DESCRIBE FIELD COD_ESTORNO_DETALHE TABLE ARRECADACAO
'CODIGO DO ESTORNO INDICA QUE A GUIA FOI ESTORNADA / DEVOLVIDA';

DESCRIBE FIELD COD_TIPO_ERRO_PROCESSAMENTO TABLE ARRECADACAO
'se houver algum erro no processamento de retorno o tipo do erro deve estar vinculado
na tabela TIPO_ERRO_PROCESSAMENTO_RETORNO';

DESCRIBE FIELD COD_REMESSA_BANCO TABLE ARRECADACAO
'ultima remessa enviada para o banco';

DESCRIBE FIELD COD_TABELA_RELACIONADA TABLE ARRECADACAO
'para saber a quem percente o debito e gravado o codigo chave da tabela
Ex: Uma guia gerada para a empresa cnpj: 045280001
COD_TABELA_RELACIONADA: 045280001
TABELA_RELACIONADA: EMPRESA

Uma guia gerada para um Associado codigo: 455
COD_TABELA_RELACIONADA: 455
TABELA_RELACIONADA: ASSOCIADO';

DESCRIBE FIELD TABELA_RELACIONADA TABLE ARRECADACAO
'nome da tabela que esta relacionada o debito
pode se a tabela empresa, associados, entidades ou outra qualquer

Ex: Uma guia gerada para a empresa cnpj: 045280001
COD_TABELA_RELACIONADA: 045280001
TABELA_RELACIONADA: EMPRESA

Uma guia gerada para um Associado codigo: 455
COD_TABELA_RELACIONADA: 455
TABELA_RELACIONADA: ASSOCIADO';

DESCRIBE FIELD DATA_EMISSAO TABLE ARRECADACAO
'Data da emissao da guia de arrecadacao';

DESCRIBE FIELD DATA_VENCIMENTO TABLE ARRECADACAO
'Data da vencimento da guia de arrecadacao';

DESCRIBE FIELD DATA_PAGAMENTO TABLE ARRECADACAO
'Data de pagamento da guia de arrecadacao';

DESCRIBE FIELD OBS_PAGAMENTO TABLE ARRECADACAO
'observações para o pagamento';

DESCRIBE FIELD OBSERVACOES_SISTEMA TABLE ARRECADACAO
'obs registradas pelo sistema
Geralmente serao gravada em algum procedimento no codigo fonte';

DESCRIBE FIELD FLAG TABLE ARRECADACAO
'Pode ser usada para varias coisas como indicar se a guia de
arrecadacao é uma arrecadacao Direta ou Indireta (D - I)
Geracao Anula/Semestral (AS)';

DESCRIBE FIELD VALOR_REPASSE_FEDERACAO TABLE ARRECADACAO
'valor repassado para a federacao';

DESCRIBE FIELD VALOR_REPASSE_CONFEDERACAO TABLE ARRECADACAO
'valor repassado para a confederacao';

DESCRIBE FIELD VALOR_REPASSE_OUTROS TABLE ARRECADACAO
'valor de outros repasses';

DESCRIBE FIELD VALOR_TARIFA TABLE ARRECADACAO
'valor da tarifa';

DESCRIBE FIELD VALOR_OUTRAS_DESPESAS TABLE ARRECADACAO
'valor de outras depesas';

DESCRIBE FIELD VALOR_OUTROS_CREDITOS TABLE ARRECADACAO
'valor de outros creditos';

DESCRIBE FIELD VALOR_CREDITADO TABLE ARRECADACAO
'valor que realmente foi cretidado na conta bancaria';

DESCRIBE FIELD RECEBIMENTO_BANCARIO_BANCO TABLE ARRECADACAO
'a maioria dos arquivos de retorno informam em qual banco
a gui foi paga. Sera gravado o codigo do banco';

DESCRIBE FIELD RECEBIMENTO_BANCARIO_AGENCIA TABLE ARRECADACAO
'a maioria dos arquivos de retorno informam em qual agencia
a guia foi paga. Sera gravado o numero da agencia';

DESCRIBE FIELD RECEBIMENTO_BANCARIO_COD_OCORRE TABLE ARRECADACAO
'a maioria dos arquivos de retorno informam um codigo de ocorrencia
Por exemplo se a guia foi paga com sucesso
Sera gravado o codigo desta ocorrencia';

DESCRIBE FIELD RECEBIMENTO_BANCARIO_DESC_OCORR TABLE ARRECADACAO
'a maioria dos arquivos de retorno informam um codigo de ocorrencia
Por exemplo se a guia foi paga com sucesso
Será gravado a descricao dessa ocorrencia';

DESCRIBE FIELD RECEBIMENTO_BANCARIO_CANAL_PGTO TABLE ARRECADACAO
'Alguns bancos retoros o canal de pgto
Internt Baking
Celular
Loterias...';

DESCRIBE FIELD OBS_OUTRAS TABLE ARRECADACAO
'outras obs qualquer';

DESCRIBE FIELD VALOR_BASE_DE_CALCULO TABLE ARRECADACAO
'valor usado para faze calculos dos valor a pagar da guia de arrecadacao';

DESCRIBE FIELD HASH_CODE_LINHA_ARQ_RETORNO TABLE ARRECADACAO
'se a guia foi recebida por um arquivo de retorno de algum banco
é gerado o hash code da linha do retorno bancario
use este campo para localizar o detalhe do processamento do retorno';

DESCRIBE FIELD FLAG_LOCAL_IMPRESSAO TABLE ARRECADACAO
'usando para controle de onde que as guias foram impressas
podem ser impressas pelo
sindicato = 0
ou
pela grafica = 1';

DESCRIBE FIELD RECEBIMENTO_BANCARIO TABLE ARRECADACAO
'Se = T indica que o recebimento foi bancario
Atraves de arquivo eletronico';

DESCRIBE FIELD EXCLUIDA TABLE ARRECADACAO
'Indica que a guia foi excluída. nao é delatada da tabela mas e gravado um log na
auditoria do sistema informando q a guia foi excluida
mas ela continua na tabela de arrecadação';

DESCRIBE FIELD DATA_HORA_IMPRESSAO TABLE ARRECADACAO
'data da impressao do boleto bancario';

DESCRIBE FIELD WS_AUTENTICACAO TABLE ARRECADACAO
'codigo de registro da guia na CIP -';

DESCRIBE FIELD COD_ARRECADACAO TABLE ARRECADACAO_DETALHE
'codigo da arrecadacao onde os detalhes vao estar vinculados';

DESCRIBE FIELD COD_ARRECADACAO_VINCULADO TABLE ARRECADACAO_DETALHE
'caso uma outra arrecadacao seja vinculada aos detalhes de outra arrecadacao informar o codigo
chave dela aqui
poderá ser usada no caso de cobranças agrupadas em um unico boleto';

DESCRIBE FIELD VALOR TABLE ARRECADACAO_DETALHE
'valor descritivo do debito caso seja necessario detalhar.
este valor nao sera usado para realizar calculos.. apenas para mostrar nos detalhes do boleto por exemplo';

DESCRIBE FIELD DATA_VENCIMENTO TABLE ARRECADACAO_DETALHE
'data de vencimento descritiva do debito (nao o debito principal) caso seja necessario mostrar nos detalhes
este valor nao sera usado para realizar calculos.. apenas para mostrar nos detalhes do boleto por exemplo';

DESCRIBE FIELD MOVIMENTO_BANCARIO TABLE ARRECADACAO_HISTORICO
'Bancario = T';

DESCRIBE FIELD ENTRADA_SAIDA TABLE CAIXA_AJUSTE
'E = Entrada
S = Saida';

DESCRIBE FIELD COD_ASSOCIADO TABLE CLIENTES_PROCESSOS
'indica que este cliente tem relacao com um associado
use este campo nos joins para buscar os processos de um associado';

DESCRIBE FIELD COD_COMERCIARIO TABLE CLIENTES_PROCESSOS
'indica que este cliente tem relacao com um comerciario
use este campo nos joins para buscar os processos de um comerciario';

DESCRIBE FIELD COD_TIPO_COBRANCA_SOCIALEMPRESA TABLE CONFIGURACAO_ASSOCIADO
'O associados tb ficam em dia com as mensalidades qdo a empresa paga o tipo de cobranca
Social empresa...';

DESCRIBE FIELD EMAIL_IMAP_ITENS_ENVIADO TABLE CONFIGURACAO_EMAIL
'Nome da pasta no servidor de email para salvar os emails enviados
esta pasta fica dinsponivel em qq gerenciador de email ou acesso web';

DESCRIBE FIELD PERMITE_CPF TABLE CONFIGURACAO_EMPRESA
'Permitir CPF';

DESCRIBE FIELD COD_LOCAL_PGTO_ARQ_RETRONO TABLE CONFIGURACAO_GUIA_ARRECADACAO
'codico do local de pagamento qdo o pagamento for atraves de
processamento de arquivos de retorno';

DESCRIBE FIELD COD_FORMA_PAGAMENTO_ARQ_RETORNO TABLE CONFIGURACAO_GUIA_ARRECADACAO
'codico da forma de pagamento qdo o pagamento for atraves de
processamento de arquivos de retorno';

DESCRIBE FIELD LOCAL_CONSULTA TABLE CONSULTA_DADOS_CADASTRAIS
'LOCAL ONDE FOI REALIZADA A CONSULTA - RECEITA FEDERAL - MINISTERIO DO TRABALHO';

DESCRIBE FIELD DATA_REALIZACAO TABLE CONTAS_PAGAR
'data q realmente o pagamento foi realizado. no caso de cheques esta data so pode ser
preenchida na compensação';

DESCRIBE FIELD VALOR_REALIZACAO TABLE CONTAS_PAGAR
'valor da movimentacao
q o pagamento foi realizado. no caso de cheques so pode ser preenchida na compensação';

DESCRIBE FIELD EXTENSAO_ARQUIVO_RETORNO TABLE CONVENIO_COBRANCA
'extensao do arquivo de retorno.
alguns sao .ret ou sao .001';

DESCRIBE FIELD MOVER_ARQUIVOS_PROCESSADOS_PARA TABLE CONVENIO_COBRANCA
'local para onde deve ser movidos os arquivos de retornos processados com sucesso
';

DESCRIBE FIELD FORCA_EXTENSAO_NOS_RETORNOS TABLE CONVENIO_COBRANCA
'antes de processar os arquivos de retorno o sistema vai analizar todos os arquivos disponivies
para serem processados e os que nao estiverem com .RET na extensao serão renomeados
EX: 1234.25
    123425.ret';

DESCRIBE FIELD PERMITE_ALTERAR_VENCIMENTO TABLE CONVENIO_COBRANCA
'indica se os debitos que usam este convenio de cobranca podem ter a data de vencimento alteradas';

DESCRIBE FIELD DIAS_VENC_COMPLEMENTO_VALOR TABLE CONVENIO_COBRANCA
'quantidade de dias para acrescentar a nova data de pagamento das guias
quando forem feitos complementos de valores.
o vencimento sera a data atual mais a quantidade de dias';

DESCRIBE FIELD TIPO_CARTEIRA TABLE CONVENIO_COBRANCA
'Simples
Registrada
Eletronica';

DESCRIBE FIELD CARACTERISTICA_TITULO TABLE CONVENIO_COBRANCA
'Simples
Vinculada
Caucionada
Descontada
Vendor';

DESCRIBE FIELD REGISTRA_VIA_WS TABLE CONVENIO_COBRANCA
'informa se o convenio possui web-service de registro online';

DESCRIBE FIELD NOVO_BOLETO_PARA_REGISTRO TABLE CONVENIO_COBRANCA
'a cada alteracao gera um novo boleto para registro
e deleta o anterior.. caso exista alteracao em Data de vencimento
e valores um novo boleto sera gerado e registrado';

DESCRIBE FIELD TABELA_RELACIONADA TABLE DEVOLUCAO_DOCUMENTOS
'tabela no banco de dados que tem relacao com a devolucao de documento';

DESCRIBE FIELD COD_TABELA_RELACIONADA TABLE DEVOLUCAO_DOCUMENTOS
'codigo chave da tabela realacionada';

DESCRIBE FIELD ALTERA_CNPJ TABLE EMPRESA_STATUS
'permite alterar o cnpj da empresa qdo estiver com o staus que permite alteração';

DESCRIBE FIELD COD_ENTIDADE_BASE TABLE ENTIDADE_SINDICAL_BASE_EXCLUSAO
'descontinuado';

DESCRIBE FIELD COD_SINDICAL_ANTIGO TABLE ENTIDADE_SINDICAL_LOG_FILIACAO
'qdo os daods forem importados do ministerio do trabalho vai ser gravado o cnpj da entidade';

DESCRIBE FIELD COD_SINDICAL_NOVO TABLE ENTIDADE_SINDICAL_LOG_FILIACAO
'qdo os daods forem importados do ministerio do trabalho vai ser gravado o cnpj da entidade';

DESCRIBE FIELD TABELA_RELACIONADA TABLE ESTORNO
'indica se o estorno foi feito para uma
Empresa
ENTIDADE_SINDICAL';

DESCRIBE FIELD COD_FILIAL TABLE FILIAL
'CÓDIGO';

DESCRIBE FIELD APELIDO TABLE FILIAL
'APELIDO';

DESCRIBE FIELD RAZAO_SOCIAL TABLE FILIAL
'RAZÃO SOCIAL';

DESCRIBE FIELD RESPONSAVEL TABLE FILIAL
'RESPONSÁVEL';

DESCRIBE FIELD TELEFONE1 TABLE FILIAL
'TELEFONE 1';

DESCRIBE FIELD TELEFONE2 TABLE FILIAL
'TELEFONE 2';

DESCRIBE FIELD TELEFONE3 TABLE FILIAL
'TELEFONE 3';

DESCRIBE FIELD EMAIL TABLE FILIAL
'E-MAIL';

DESCRIBE FIELD NUMERO TABLE FILIAL
'NÚMERO';

DESCRIBE FIELD BAIRRO TABLE FILIAL
'BAIRRO';

DESCRIBE FIELD CEP TABLE FILIAL
'CEP';

DESCRIBE FIELD CIDADE TABLE FILIAL
'CIDADE';

DESCRIBE FIELD LOGRADOURO TABLE FILIAL
'LOGRADOURO';

DESCRIBE FIELD COMPLEMENTO TABLE FILIAL
'COMPLEMENTO';

DESCRIBE FIELD CONTROLAR_COMO_CHEQUE TABLE FORMAPAGAMENTO
'marque esta opção para controlar a forma de pagamento como se fosse um cheque.
geralmente os cheque irao realizar uma movimentação de caixa qdo forem marcados como compensados';

DESCRIBE FIELD COD_CONVENIO_COBRANCA TABLE GUIAS_DA_WEB
'indica qual o convenio de cobranca a guia esta sendo gerada';

DESCRIBE FIELD DATA_MOVIMENTO_EFETUADO TABLE MOVIMENTO_CAIXA
'a verdadeira data da movimentacao do caixa
no caso de cheques esta data deve ser preenchida qdo o cheque for compensado';

DESCRIBE FIELD VALOR_MOVIMENTO_EFETUADO TABLE MOVIMENTO_CAIXA
'o verdadeiro valor da movimentacao do caixa
no caso de cheques esta data deve ser preenchida qdo o cheque for compensado';

DESCRIBE FIELD FTP_RETORNOS_USERNAME TABLE PARAMETRO
'usuario para acessar o FTP de retornos';

DESCRIBE FIELD FTP_RETORNOS_HOST TABLE PARAMETRO
'ftp de retorno Ex: ftp.feccoemg.com.br';

DESCRIBE FIELD FTP_RETORNOS_PASSWORD TABLE PARAMETRO
'senha para acessar o FTP de retornos';

DESCRIBE FIELD MENU_PRINCIPAL_INVISIVEL TABLE PARAMETRO
'O itens do menu principal nao permitidos para o usuario ficam invisiveis';

DESCRIBE FIELD ESTORNO_STATUS_CONCLUIDO TABLE PARAMETRO
'indica qual o Status do retorno que indica a conclusao do estorno
que o estorno realmente aconteceu.. concluido.. devolvido';

DESCRIBE FIELD LOCAL_NOVIDADES_VERSAO TABLE PARAMETRO
'local onde esta o html das novidades da versao do sistema
pode ser local ou web. o sins vai buscar de acordo com a versao do exe
 www.systemsgeraes.com.br\4.0.0.1.htnl
 c:\sins\4.0.0.1.html';

DESCRIBE FIELD IMPORTA_GUIAS_WEB_MYSQL TABLE PARAMETRO
'se true busca as guias da web conectando direto na base de dados mysql
se falar usa o Get para gerar o arquivo txt no ftp';

DESCRIBE FIELD DIAS_CONSULTA_RECEITA_WS TABLE PARAMETRO
'Numero de dias para consultar os dados da receita WS
a receita ws mantem um buffer de dados, caso nao esteja dentro do limite de dias
ela consulta novamente na receita federal
essa consulta demora mais para retornar os dados';

DESCRIBE FIELD WS_REGISTRADOR_DATA TABLE PARAMETRO
'registra a ultima data e hora que o registrador tentou registar os boletos via WS
O sins vai olhar para este campo para ver se o registradr esta funcionando
EX: Caso esteja mais de 1 hora sem registrar ele pode estar travado ou fechado';

DESCRIBE FIELD CONSULTA_RECEITA_LOCAL TABLE PARAMETRO
'local do webservice de consulta do cnpj
lcReceita_Federal , lcMinisterio_do_trabalho, lcCaixaEconomica, lcReceitaWS, lcCnpjJa';

DESCRIBE FIELD TIPO TABLE PERIODICIDADE
'QTD MES = quantidae de meses
QTD DIA = Quantidade de dias
DENTRO DO ANO = Verificar dentro do ano
DENTRO DO MES = Verifica dentro do mes';

DESCRIBE FIELD HASH_CODE_ARQ_RETORNO TABLE PROCESSAMENTO
'cada arquivo de retorno possui um hashcode unico
é despresado os header e trailler dos arquivo para
validar somente o conteudo, desta forma evita o pocessamento
de um arquivo de retorno redisponibilizado';

DESCRIBE FIELD HASH_CODE TABLE PROCESSAMENTO_DETALHES
'hashCode da linha do arquivo de retorno.
O hashcode diferente para cada linha do arquivos do retorno
portanto pode ser usado como UNIQUE para garantir q nao sejam gravadas duas linha iguais
na tabela de detalhe';

DESCRIBE FIELD TIPO_DA_ENTIDADE TABLE REGISTRO
'Obrigatório:
1=Sindicato; 2=Federação; 3=Confederação ; 4=Cees';

DESCRIBE FIELD OCORRENCIA_BANCARIA TABLE REMESSA_BANCO_DETALHE
'Cada banco tem seu codigo de movimento por isso vamos usar os tipo do ACBr
toRemessaRegistrar,
toRemessaBaixar,
toRemessaDebitarEmConta,
toRemessaConcederAbatimento,
toRemessaCancelarAbatimento,';

DESCRIBE FIELD GUIA_DA_WEB TABLE REMESSA_BANCO_DETALHE
'indica que esta guia é uma guia gerada nao web';

DESCRIBE FIELD WS_AUTENTICACAO TABLE REMESSA_BANCO_DETALHE
'autenticacao do registro via web-service';

DESCRIBE FIELD WS_DATA TABLE REMESSA_BANCO_DETALHE
'data do registro via web-service';

DESCRIBE FIELD MULTA_JUROS_AUTOMATICO TABLE TIPO_COBRANCA
'ajusta a multa e o juros automaticamente na impressao do boleto bancario
se o boleto ja esgta vencido o sistema ja coloca a multa e juros nos campos do banco de dados';

DESCRIBE FIELD MODELO_DE_BOLETO TABLE TIPO_COBRANCA
'indica qual o modelo de boleto bancario deve ser impresso';

DESCRIBE FIELD NAO_GERAR_SE_JA_EXISTIR TABLE TIPO_COBRANCA
'evita a duplicidade de cobrança para mesma competencia e complementar';

DESCRIBE FIELD VERIFICAR_SE_NAO_GERADA TABLE TIPO_COBRANCA
'Algumas guias como sindical e FAA mensal devem existie em todas as competencias
este flag indica para o sistema gerar a informação qdo a guia nao esta no sistema
acontece no caso da empresa gerar a guia pela web e nao existir no banco de dados local';

DESCRIBE FIELD FORMATO_BOLETO TABLE TIPO_COBRANCA
'forma de impressao do boleto-
CARNÊ
BOLETO
ARQUIVO';

DESCRIBE FIELD DIAS_CALCULO_JUROS TABLE TIPO_COBRANCA
'qtd de dias que o sistema ira calcular os juros

ex:
venc: 10/01/2016
Hoje: 10/02/2016
Dias calculo de juros 7
o juros sera calculado ate: 17/02/2016';

DESCRIBE FIELD INICIO_DE_COBRANCA TABLE TIPO_COBRANCA
'esta data sera a base para o inicio da cobranca
Caso a empresa nao tenha INICIO_ATIVIDADE / INICIO_COBRANCA
Caso o associado nao tenha DATACADASTRO / INICIO_COBRANCA
Caso a entidade nao tenha INICIO_ATIVIDADE / INICIO_COBRANCA';

DESCRIBE FIELD BOLETOS_REGISTRADOS TABLE TIPO_COBRANCA
'indica q todos os boletos serao registrados no banco
e a cada alteração da arrecadacao ira gerar uma remessa bancaria
para informar ao banco a alteração';

DESCRIBE FIELD FIM_DE_COBRANCA TABLE TIPO_COBRANCA
'define o a data fim para a cobranca automatica.
arrecadações com vencimentos apos esta data serão ignorados';

DESCRIBE FIELD TIPO_CALCULO_COBRANCA TABLE TIPO_COBRANCA
' * Nenhum
 * Sindical -> Calcula 3.333 em cima do salario x numero de empregados

caso a guia nao tenha valor o sistema pode calcular o valor baseado no
numero de empregados e valor do salario minimo
EX: 10 funcionarios x 1.100,00 = ( Funcionarios VS Salario)
    10 Funcionarios x 10% Salario ( 10% do salario para casa funcionario)';

DESCRIBE FIELD QRCODE TABLE WHATS_CONFIG
'Imagem qrcode para vincular o cel no whats';

DESCRIBE FIELD USAR_QUANDO TABLE WHATS_ENVIO_TELEFONE
'ERRO REGISTRADOR -> envia uma msg informando que o registrador esta on-line mas com problemas
REGISTRADOR OFFLINE -> envia msg informando que o registrador esta off-line';

DESCRIBE FIELD ARQUIVO TABLE WHATS_FILA_ENVIO
'caminho do arquivo q vai ser enviado para o telefone';

