SET DEFINE OFF;

DROP TABLE CAPRODUTOXCUSTOS_2201;

-- TEMPIMPORTCABECALHO
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTCABECALHO
  (
    uniqueMachineID                VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao                 NUMERIC (14,0) DEFAULT 0 NOT NULL,
    tipoDocumento                  NUMERIC (3,0) DEFAULT 0 NOT NULL,
    modeloDocumento                NUMERIC (4,0) DEFAULT 0 NOT NULL,
    condicaoPagamento              NUMERIC (4,0) DEFAULT 0 NOT NULL,
    loteNfe                        NUMERIC (14,0) DEFAULT 0 NOT NULL,
    chaveNfe                       VARCHAR (44) DEFAULT ' ' NOT NULL,
    ufIbge                         NUMERIC (2,0) DEFAULT 0 NOT NULL,
    codigoNumericoNfe              NUMERIC (8,0) DEFAULT 0 NOT NULL,
    naturezaOperacaoDescricao      VARCHAR (60) DEFAULT ' ' NOT NULL,
    modeloDocumentoFiscal          CHAR (2) DEFAULT '  ' NOT NULL,
    serieFiscal                    VARCHAR (4) DEFAULT ' ' NOT NULL,
    documentoFiscal                NUMERIC (9,0) DEFAULT 0 NOT NULL,
    dataEmissao                    DATE,
    timezoneEmissao                VARCHAR (6) DEFAULT ' ' NOT NULL,
    dataEntradaSaida               DATE,
    entradaSaida                   CHAR (1) DEFAULT ' ' NOT NULL,
    localDestinoOperacao           CHAR (1) DEFAULT ' ' NOT NULL,
    municipioFatoGerador           NUMERIC (7,0) DEFAULT 0 NOT NULL,
    formatoImpressaoDanfe          CHAR (1) DEFAULT ' ' NOT NULL,
    formaEmissaoNfe                CHAR (1) DEFAULT ' ' NOT NULL,
    digitoVerificadorNfe           NUMERIC (1,0) DEFAULT 0 NOT NULL,
    indicadorAmbienteNfe           CHAR (1) DEFAULT ' ' NOT NULL,
    tipoCTe                        CHAR (1) DEFAULT ' ' NOT NULL,
    finalidadeNota                 CHAR (1) DEFAULT ' ' NOT NULL,
    indicadorConsumidorFinal       CHAR (1) DEFAULT ' ' NOT NULL,
    indicadorPresencaComprador     CHAR (1) DEFAULT ' ' NOT NULL,
    versaoAplicativo               VARCHAR (20) DEFAULT ' ' NOT NULL,
    fornecedor                     NUMERIC (14,0) DEFAULT 0 NOT NULL,
    cnpjCpfIdEstrangeiroFornecedor VARCHAR (20) DEFAULT ' ' NOT NULL,
    nomeRazaoSocialFornecedor      VARCHAR (60) DEFAULT ' ' NOT NULL,
    nomeFantasiaFornecedor         VARCHAR (60) DEFAULT ' ' NOT NULL,
    enderecoFornecedor             NUMERIC (14,0) DEFAULT 0 NOT NULL,
    logradouroFornecedor           VARCHAR (60) DEFAULT ' ' NOT NULL,
    numeroFornecedor               VARCHAR (60) DEFAULT ' ' NOT NULL,
    complementoFornecedor          VARCHAR (60) DEFAULT ' ' NOT NULL,
    bairroDistritoFornecedor       VARCHAR (60) DEFAULT ' ' NOT NULL,
    municipioFornecedor            NUMERIC (7,0) DEFAULT 0 NOT NULL,
    descricaoMunicipioFornecedor   VARCHAR (60) DEFAULT ' ' NOT NULL,
    ufFornecedor                   CHAR (2) DEFAULT '  ' NOT NULL,
    cepFornecedor                  NUMERIC (8,0) DEFAULT 0 NOT NULL,
    paisFornecedor                 CHAR (4) DEFAULT '    ' NOT NULL,
    descricaoPaisFornecedor        VARCHAR (60) DEFAULT ' ' NOT NULL,
    idFoneFornecedor               NUMERIC (14,0) DEFAULT 0 NOT NULL,
    foneFornecedor                 VARCHAR (14) DEFAULT ' ' NOT NULL,
    inscricaoEstadualFornecedor    VARCHAR (14) DEFAULT ' ' NOT NULL,
    inscricaoMunicipalFornecedor   VARCHAR (15) DEFAULT ' ' NOT NULL,
    cnaeFornecedor                 NUMERIC (7,0) DEFAULT 0 NOT NULL,
    regimeTributarioFornecedor     CHAR (1) DEFAULT ' ' NOT NULL,
    cnpjCpfIdEstrangeiroDestinat   VARCHAR (20) DEFAULT ' ' NOT NULL,
    nomeRazaoSocialDestinatario    VARCHAR (60) DEFAULT ' ' NOT NULL,
    logradouroDestinatario         VARCHAR (60) DEFAULT ' ' NOT NULL,
    numeroDestinatario             VARCHAR (60) DEFAULT ' ' NOT NULL,
    complementoDestinatario        VARCHAR (60) DEFAULT ' ' NOT NULL,
    bairroDistritoDestinatario     VARCHAR (60) DEFAULT ' ' NOT NULL,
    municipioDestinatario          NUMERIC (7,0) DEFAULT 0 NOT NULL,
    descricaoMunicipioDestinatario VARCHAR (60) DEFAULT ' ' NOT NULL,
    ufDestinatario                 CHAR (2) DEFAULT '  ' NOT NULL,
    cepDestinatario                NUMERIC (8,0) DEFAULT 0 NOT NULL,
    paisDestinatario               CHAR (4) DEFAULT '    ' NOT NULL,
    descricaoPaisDestinatario      VARCHAR (60) DEFAULT ' ' NOT NULL,
    foneDestinatario               VARCHAR (14) DEFAULT ' ' NOT NULL,
    indicadorInscricaoEstadualDest CHAR (1) DEFAULT ' ' NOT NULL,
    inscricaoEstadualDestinatario  VARCHAR (14) DEFAULT ' ' NOT NULL,
    inscricaoMunicipalDestinatario VARCHAR (15) DEFAULT ' ' NOT NULL,
    inscricaoSuframaDestinatario   VARCHAR (9) DEFAULT ' ' NOT NULL,
    emailDestinatario              VARCHAR (60) DEFAULT ' ' NOT NULL,
    logradouroRetirada             VARCHAR (60) DEFAULT ' ' NOT NULL,
    numeroRetirada                 VARCHAR (60) DEFAULT ' ' NOT NULL,
    complementoRetirada            VARCHAR (60) DEFAULT ' ' NOT NULL,
    bairroDistritoRetirada         VARCHAR (60) DEFAULT ' ' NOT NULL,
    municipioRetirada              NUMERIC (7,0) DEFAULT 0 NOT NULL,
    descricaoMunicipioRetirada     VARCHAR (60) DEFAULT ' ' NOT NULL,
    ufRetirada                     CHAR (2) DEFAULT '  ' NOT NULL,
    cepRetirada                    NUMERIC (8,0) DEFAULT 0 NOT NULL,
    paisRetirada                   CHAR (4) DEFAULT '    ' NOT NULL,
    descricaoPaisRetirada          VARCHAR (60) DEFAULT ' ' NOT NULL,
    foneRetirada                   VARCHAR (14) DEFAULT ' ' NOT NULL,
    logradouroEntrega              VARCHAR (60) DEFAULT ' ' NOT NULL,
    numeroEntrega                  VARCHAR (60) DEFAULT ' ' NOT NULL,
    complementoEntrega             VARCHAR (60) DEFAULT ' ' NOT NULL,
    bairroDistritoEntrega          VARCHAR (60) DEFAULT ' ' NOT NULL,
    municipioEntrega               NUMERIC (7,0) DEFAULT 0 NOT NULL,
    descricaoMunicipioEntrega      VARCHAR (60) DEFAULT ' ' NOT NULL,
    ufEntrega                      CHAR (2) DEFAULT '  ' NOT NULL,
    cepEntrega                     NUMERIC (8,0) DEFAULT 0 NOT NULL,
    paisEntrega                    CHAR (4) DEFAULT '    ' NOT NULL,
    descricaoPaisEntrega           VARCHAR (60) DEFAULT ' ' NOT NULL,
    foneEntrega                    VARCHAR (14) DEFAULT ' ' NOT NULL,
    baseICMS                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMS                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSDesoneracao           NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFCPUFDestinatario         NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSSuframaDestinatario   NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSSuframaRemetente      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFCP                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseICMSST                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSST                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFCPST                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFCPSTAnteriormente        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorProdutos                  NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFrete                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorSeguro                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorDesconto                  NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorII                        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorIPI                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorIPIDevelucao              NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorPIS                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorCOFINS                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorOutrasDespesas            NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorLiquidoItem               NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorTotalTributosAproximados  NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorServicos                  NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseISSQN                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorISSQN                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    dataCompetencia                DATE,
    valorISSQNRetencao             NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorPISRetencao               NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorCOFINSRetencao            NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorCSLL                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseIRRF                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorIRRF                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseINSS                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorINSS                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    modalidadeFrete                CHAR (1) DEFAULT ' ' NOT NULL,
    transportadora                 NUMERIC (14,0) DEFAULT 0 NOT NULL,
    cnpjCpfIdEstrangeiroTransp     VARCHAR (20) DEFAULT ' ' NOT NULL,
    nomeRazaoSocialTransp          VARCHAR (60) DEFAULT ' ' NOT NULL,
    inscricaoEstadualTransp        VARCHAR (14) DEFAULT ' ' NOT NULL,
    enderecoTransp                 VARCHAR (60) DEFAULT ' ' NOT NULL,
    descricaoMunicipioTransp       VARCHAR (60) DEFAULT ' ' NOT NULL,
    ufTransportadora               CHAR (2) DEFAULT '  ' NOT NULL,
    placa                          VARCHAR (7) DEFAULT ' ' NOT NULL,
    uf                             CHAR (2) DEFAULT '  ' NOT NULL,
    rntc                           VARCHAR (20) DEFAULT ' ' NOT NULL,
    vagao                          VARCHAR (20) DEFAULT ' ' NOT NULL,
    balsa                          VARCHAR (20) DEFAULT ' ' NOT NULL,
    quantidadeVolume               NUMERIC (15,0) DEFAULT 0 NOT NULL,
    especieVolume                  VARCHAR (60) DEFAULT ' ' NOT NULL,
    descricaoMarca                 VARCHAR (60) DEFAULT ' ' NOT NULL,
    numeracaoVolume                VARCHAR (60) DEFAULT ' ' NOT NULL,
    pesoLiquido                    NUMERIC (15,6) DEFAULT 0 NOT NULL,
    pesoBruto                      NUMERIC (15,6) DEFAULT 0 NOT NULL,
    descInformacaoAdicionalFisco   VARCHAR (800) DEFAULT ' ' NOT NULL,
    descInformacaoComplementar     VARCHAR (800) DEFAULT ' ' NOT NULL,
    fatura                         VARCHAR (60) DEFAULT ' ' NOT NULL,
    faturaValorOriginal            NUMERIC (15,2) DEFAULT 0 NOT NULL,
    faturaDesconto                 NUMERIC (15,2) DEFAULT 0 NOT NULL,
    faturaValorLiquido             NUMERIC (15,2) DEFAULT 0 NOT NULL,
    protocoloNfe                   NUMERIC (15,0) DEFAULT 0 NOT NULL,
    protocoloNfeData               DATE
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTCABECALHO ADD CONSTRAINT TEMPIMPORTCABECALHO_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao);

-- TEMPIMPORTCONFERENCIA
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTCONFERENCIA
  (
    uniqueMachineID VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao  NUMERIC (14,0) DEFAULT 0 NOT NULL,
    id              NUMERIC (14,0) DEFAULT 0 NOT NULL,
    ordenacao       NUMERIC (11,0) DEFAULT 0 NOT NULL,
    selecionado     NUMERIC (1,0) DEFAULT 0 NOT NULL,
    nomeCampo       VARCHAR (256) DEFAULT ' ' NOT NULL,
    conteudoAtual   VARCHAR (256) DEFAULT ' ' NOT NULL,
    conteudoNovo    VARCHAR (256) DEFAULT ' ' NOT NULL,
    mascara         VARCHAR (30) DEFAULT ' ' NOT NULL,
    excecaoTipi     CHAR (3) DEFAULT '   ' NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTCONFERENCIA ADD CONSTRAINT TEMPIMPORTCONFERENCIA_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, id);
CREATE INDEX TEMPIMPORTCONFERENCIA_K2 ON TEMPIMPORTCONFERENCIA (uniqueMachineID, contadorSessao, ordenacao);

-- TEMPIMPORTNFREF
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTNFREF
  (
    uniqueMachineID       VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao        NUMERIC (14,0) DEFAULT 0 NOT NULL,
    sequencia             NUMERIC (3,0) DEFAULT 0 NOT NULL,
    modeloDocumentoFiscal CHAR (2) DEFAULT '  ' NOT NULL,
    chaveNfe              VARCHAR (44) DEFAULT ' ' NOT NULL,
    uf                    CHAR (2) DEFAULT '  ' NOT NULL,
    dataEmissao           DATE,
    indicadorPessoa       CHAR (1) DEFAULT ' ' NOT NULL,
    cnpjCpfIdEstrangeiro  VARCHAR (20) DEFAULT ' ' NOT NULL,
    inscricaoEstadual     VARCHAR (14) DEFAULT ' ' NOT NULL,
    serieFiscal           VARCHAR (4) DEFAULT ' ' NOT NULL,
    subserieFiscal        NUMERIC (3,0) DEFAULT 0 NOT NULL,
    documentoFiscal       NUMERIC (9,0) DEFAULT 0 NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTNFREF ADD CONSTRAINT TEMPIMPORTNFREF_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, sequencia);

-- TEMPIMPORTITENS
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTITENS
  (
    uniqueMachineID               VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao                NUMERIC (14,0) DEFAULT 0 NOT NULL,
    sequencia                     NUMERIC (3,0) DEFAULT 0 NOT NULL,
    selecionado                   NUMERIC (1,0) DEFAULT 0 NOT NULL,
    produtoImpresso               VARCHAR (60) DEFAULT ' ' NOT NULL,
    descricaoImpressa             VARCHAR (120) DEFAULT ' ' NOT NULL,
    codigoFornecedor              VARCHAR (60) DEFAULT ' ' NOT NULL,
    eanGtin                       VARCHAR (14) DEFAULT ' ' NOT NULL,
    descricaoFornecedor           VARCHAR (120) DEFAULT ' ' NOT NULL,
    ncm                           CHAR (8) DEFAULT '        ' NOT NULL,
    cest                          NUMERIC (7,0) DEFAULT 0 NOT NULL,
    codigoProdutoAnp              NUMERIC (9,0) DEFAULT 0 NOT NULL,
    excecaoTipi                   CHAR (3) DEFAULT '   ' NOT NULL,
    cfop                          NUMERIC (4,0) DEFAULT 0 NOT NULL,
    unidadeMedidaComercial        VARCHAR (6) DEFAULT ' ' NOT NULL,
    quantidadeComercial           NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidadeGrade               NUMERIC (15,6) DEFAULT 0 NOT NULL,
    contadorGrade                 NUMERIC (14,0) DEFAULT 0 NOT NULL,
    precoUnitarioComercial        NUMERIC (15,7) DEFAULT 0 NOT NULL,
    valorProdutoComercial         NUMERIC (15,2) DEFAULT 0 NOT NULL,
    eanGtinTributado              VARCHAR (14) DEFAULT ' ' NOT NULL,
    unidadeMedidaTributado        VARCHAR (6) DEFAULT ' ' NOT NULL,
    quantidadeTributado           NUMERIC (15,6) DEFAULT 0 NOT NULL,
    precoUnitarioTributado        NUMERIC (15,7) DEFAULT 0 NOT NULL,
    valorFrete                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorSeguro                   NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorDesconto                 NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorOutrasDespesasAcessorias NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorProdutoTributado         NUMERIC (15,2) DEFAULT 0 NOT NULL,
    origemMercadoria              CHAR (1) DEFAULT ' ' NOT NULL,
    stICMS                        CHAR (2) DEFAULT '  ' NOT NULL,
    modalidadeBaseCalcICMS        CHAR (1) DEFAULT ' ' NOT NULL,
    baseICMS                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaICMS                  NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorICMS                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    reducaoBaseICMS               NUMERIC (7,4) DEFAULT 0 NOT NULL,
    baseFCP                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaFCP                   NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorFCP                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    modalidadeBaseCalcICMSST      CHAR (1) DEFAULT ' ' NOT NULL,
    margemValorAdicionadoST       NUMERIC (15,4) DEFAULT 0 NOT NULL,
    reducaoBaseST                 NUMERIC (7,4) DEFAULT 0 NOT NULL,
    baseICMSST                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaICMSST                NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorICMSST                   NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseFCPST                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaFCPST                 NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorFCPST                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSDesoneracao          NUMERIC (15,2) DEFAULT 0 NOT NULL,
    motivoDesoneracaoICMS         CHAR (2) DEFAULT '  ' NOT NULL,
    valorICMSOperacao             NUMERIC (15,2) DEFAULT 0 NOT NULL,
    diferimentoICMS               NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorICMSDiferido             NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseICMSSTAnteriormente       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSSTAnteriormente      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaSTSuportConsFinal     NUMERIC (7,4) DEFAULT 0 NOT NULL,
    aliquotaFCPSTAnteriormente    NUMERIC (7,4) DEFAULT 0 NOT NULL,
    baseFCPSTAnteriormente        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorFCPSTAnteriormente       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    partilhaICMSInterestadual     NUMERIC (7,4) DEFAULT 0 NOT NULL,
    baseICMSUFRemetente           NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSUFRemetente          NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseICMSUFDestinatario        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorICMSUFDestinatario       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaICMSUFDestinatario    NUMERIC (7,4) DEFAULT 0 NOT NULL,
    stSimplesNacional             CHAR (3) DEFAULT '   ' NOT NULL,
    creditoSimplesNacional        NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorCreditoSimplesNacional   NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseImpostoImportacao         NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorImpostoImportacao        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorDespesasAduaneiras       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorIOF                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    codigoEnquadramentoIPI        NUMERIC (3,0) DEFAULT 0 NOT NULL,
    stIPI                         CHAR (2) DEFAULT ' ' NOT NULL,
    baseIPI                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorIPI                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaIPI                   NUMERIC (7,4) DEFAULT 0 NOT NULL,
    qtdeUnidIPI                   NUMERIC (15,6) DEFAULT 0 NOT NULL,
    valorAliquotaIPI              NUMERIC (15,4) DEFAULT 0 NOT NULL,
    baseISSQN                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaISSQN                 NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorISSQN                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    indicadorISSQN                CHAR (1) DEFAULT ' ' NOT NULL,
    listaServicos                 NUMERIC (4,0) DEFAULT 0 NOT NULL,
    valorISSQNRetencao            NUMERIC (15,2) DEFAULT 0 NOT NULL,
    stPIS                         CHAR (2) DEFAULT '  ' NOT NULL,
    basePIS                       NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorPIS                      NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaPIS                   NUMERIC (7,4) DEFAULT 0 NOT NULL,
    quantidadeVendidaPIS          NUMERIC (15,6) DEFAULT 0 NOT NULL,
    valorAliquotaPIS              NUMERIC (15,4) DEFAULT 0 NOT NULL,
    aliquotaPISST                 NUMERIC (7,4) DEFAULT 0 NOT NULL,
    basePISST                     NUMERIC (15,2) DEFAULT 0 NOT NULL,
    quantidadeVendidaPISST        NUMERIC (15,6) DEFAULT 0 NOT NULL,
    valorAliquotaPISST            NUMERIC (15,4) DEFAULT 0 NOT NULL,
    valorPISST                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    stCOFINS                      CHAR (2) DEFAULT '  ' NOT NULL,
    baseCOFINS                    NUMERIC (15,2) DEFAULT 0 NOT NULL,
    valorCOFINS                   NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaCOFINS                NUMERIC (7,4) DEFAULT 0 NOT NULL,
    quantidadeVendidaCOFINS       NUMERIC (15,6) DEFAULT 0 NOT NULL,
    valorAliquotaCOFINS           NUMERIC (15,4) DEFAULT 0 NOT NULL,
    aliquotaCOFINSST              NUMERIC (7,4) DEFAULT 0 NOT NULL,
    baseCOFINSST                  NUMERIC (15,2) DEFAULT 0 NOT NULL,
    quantidadeVendidaCOFINSST     NUMERIC (15,6) DEFAULT 0 NOT NULL,
    valorAliquotaCOFINSST         NUMERIC (15,4) DEFAULT 0 NOT NULL,
    valorCOFINSST                 NUMERIC (15,2) DEFAULT 0 NOT NULL,
    baseFCPUFDestinatario         NUMERIC (15,2) DEFAULT 0 NOT NULL,
    aliquotaFCPUFDestinatario     NUMERIC (7,4) DEFAULT 0 NOT NULL,
    aliquotaICMSInterestadual     NUMERIC (7,4) DEFAULT 0 NOT NULL,
    valorFCPUFDestinatario        NUMERIC (15,2) DEFAULT 0 NOT NULL,
    informacoesAdicionaisProduto  VARCHAR (500) DEFAULT ' ' NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTITENS ADD CONSTRAINT TEMPIMPORTITENS_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, sequencia);
CREATE INDEX TEMPIMPORTITENS_K2 ON TEMPIMPORTITENS (uniqueMachineID, contadorSessao, codigoFornecedor, sequencia);

-- TEMPIMPORTGRADES
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTGRADES
  (
    uniqueMachineID           VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao            NUMERIC (14,0) DEFAULT 0 NOT NULL,
    sequencia                 NUMERIC (3,0) DEFAULT 0 NOT NULL,
    contadorGrade             NUMERIC (14,0) DEFAULT 0 NOT NULL,
    gradeDistribuicaoDFe      NUMERIC (14,0) DEFAULT 0 NOT NULL,
    gradeProduto              NUMERIC (14,0) DEFAULT 0 NOT NULL,
    produto                   NUMERIC (7,0) DEFAULT 0 NOT NULL,
    controleQuantidade        NUMERIC (1,0) DEFAULT 0 NOT NULL,
    unidadeMedidaConversao    VARCHAR (6) DEFAULT ' ' NOT NULL,
    conversorQuantidade       NUMERIC (15,8) DEFAULT 0 NOT NULL,
    loteMinimo                NUMERIC (15,6) DEFAULT 0 NOT NULL,
    loteMultiplo              NUMERIC (15,6) DEFAULT 0 NOT NULL,
    altura                    NUMERIC (14,3) DEFAULT 0 NOT NULL,
    largura                   NUMERIC (14,3) DEFAULT 0 NOT NULL,
    comprimento               NUMERIC (14,3) DEFAULT 0 NOT NULL,
    pecas                     NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidadeComercial       NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidade                NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidadeConvertida      NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidadeSaldoOrcamento  NUMERIC (15,6) DEFAULT 0 NOT NULL,
    quantidadeBaixarOrcamento NUMERIC (15,6) DEFAULT 0 NOT NULL,
    operacaoFiscal            NUMERIC (14,0) DEFAULT 0 NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTGRADES ADD CONSTRAINT TEMPIMPORTGRADES_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, sequencia, contadorGrade);
CREATE INDEX TEMPIMPORTGRADES_K2 ON TEMPIMPORTGRADES (uniqueMachineID, contadorSessao, sequencia, produto);

-- TEMPIMPORTNUMEROSSERIE
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTNUMEROSSERIE
  (
    uniqueMachineID VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao  NUMERIC (14,0) DEFAULT 0 NOT NULL,
    sequencia       NUMERIC (3,0) DEFAULT 0 NOT NULL,
    contadorGrade   NUMERIC (14,0) DEFAULT 0 NOT NULL,
    gradeProduto    NUMERIC (14,0) DEFAULT 0 NOT NULL,
    numeroSerie     VARCHAR (60) DEFAULT ' ' NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTNUMEROSSERIE ADD CONSTRAINT TEMPIMPORTNUMEROSSERIE_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, sequencia, contadorGrade, gradeProduto, numeroSerie);

-- TEMPIMPORTFINANCEIRO
CREATE GLOBAL TEMPORARY TABLE TEMPIMPORTFINANCEIRO
  (
    uniqueMachineID VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao  NUMERIC (14,0) DEFAULT 0 NOT NULL,
    parcela         NUMERIC (3,0) DEFAULT 0 NOT NULL,
    fatura          VARCHAR (60) DEFAULT ' ' NOT NULL,
    vencimento      DATE,
    valor           NUMERIC (15,2) DEFAULT 0 NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPIMPORTFINANCEIRO ADD CONSTRAINT TEMPIMPORTFINANCEIRO_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, parcela);

-- TEMPRETORNOCOBRANCA
CREATE GLOBAL TEMPORARY TABLE TEMPRETORNOCOBRANCA
  (
    uniqueMachineID VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao  NUMERIC (14,0) DEFAULT 0 NOT NULL,
    id              NUMERIC (14,0) DEFAULT 0 NOT NULL,
    ocorrencia      VARCHAR2(2) NOT NULL,
    motivo          VARCHAR2(3) NOT NULL,
    idFinanceiro    NUMERIC (14,0) DEFAULT 0 NOT NULL,
    data            DATE,
    valor           NUMERIC (15,2) DEFAULT 0 NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPRETORNOCOBRANCA ADD CONSTRAINT TEMPRETORNOCOBRANCA_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, id);
CREATE INDEX TEMPRETORNOCOBRANCA_K2 ON TEMPRETORNOCOBRANCA (uniqueMachineID, contadorSessao, ocorrencia, motivo, idFinanceiro);

UPDATE SICFOPS SET cfopEntrada = 1556 WHERE cfop = 5667;
UPDATE SICFOPS SET cfopEntrada = 2556 WHERE cfop = 6667;

COMMIT;

create or replace PROCEDURE ADD_DOCTRANSF_ITEM_N_SER_GRAVA (
    p_estabelecimentoAtivo   IN NUMBER,
    p_idNumeroSerieDocTransf IN NUMBER,
    p_idItemDocTransferencia IN NUMBER,
    p_gradeProduto           IN NUMBER,
    p_idNumeroSerie          IN NUMBER,
    /* Retornos */
    r_idNumeroSerieDocTransf OUT NUMBER)
IS
BEGIN
  r_idNumeroSerieDocTransf := p_idNumeroSerieDocTransf;
  IF r_idNumeroSerieDocTransf = 0 THEN
    r_idNumeroSerieDocTransf := FUNC_ADD_BUSCA_PROXIMO_ID('MODOCTRANSFXNUMEROSSERIE', 'idNumeroSerieDocTransf', 14, p_estabelecimentoAtivo, NULL);
  END IF;
  MERGE INTO MODOCTRANSFXNUMEROSSERIE a 
  USING (
    SELECT
      r_idNumeroSerieDocTransf idNumeroSerieDocTransf,
      p_idItemDocTransferencia idItemDocTransferencia,
      p_gradeProduto           gradeProduto,
      p_idNumeroSerie          idNumeroSerie
    FROM DUAL
  ) b ON (a.idNumeroSerieDocTransf = b.idNumeroSerieDocTransf)
  WHEN MATCHED THEN UPDATE SET
    a.idItemDocTransferencia = b.idItemDocTransferencia,
    a.gradeProduto           = b.gradeProduto,
    a.idNumeroSerie          = b.idNumeroSerie
  WHEN NOT MATCHED THEN INSERT (
    idNumeroSerieDocTransf,
    idItemDocTransferencia,
    gradeProduto,
    idNumeroSerie)
  VALUES (
    b.idNumeroSerieDocTransf,
    b.idItemDocTransferencia,
    b.gradeProduto,
    b.idNumeroSerie);
END ADD_DOCTRANSF_ITEM_N_SER_GRAVA;

/

create or replace PROCEDURE ADD_MODOCTRANSFXITENS_E_CORREL (
  p_idItemDocTransferencia IN NUMBER)
IS
  CURSOR c_cons IS
    SELECT idConserto
    FROM MOCONSERTOS
    WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  CURSOR c_est IS
    SELECT idEstoque
    FROM MODOCTRANSFXESTOQUE
    WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  CURSOR c_resEst IS
    SELECT idReservaEstoque
    FROM MODOCTRANSFXRESERVAESTOQ
    WHERE idItemDocTransferencia = p_idItemDocTransferencia;
BEGIN
  FOR a IN c_cons
  LOOP
    ADD_MOCONSERTOS_EXCLUI (a.idConserto);
  END LOOP;
  FOR a IN c_est
  LOOP
    ADD_MOESTOQUES_EXCLUI (a.idEstoque);
  END LOOP;
  FOR a IN c_resEst
  LOOP
    ADD_MORESERVASESTOQUE_EXCLUI (a.idReservaEstoque);
  END LOOP;
  DELETE MODOCTRANSFXNUMEROSSERIE  WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  DELETE MODOCTRANSFXORCAMENTOITEM WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  DELETE MODOCTRANSFXPREDOCUM      WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  DELETE MODOCTRANSFXDOCFISCAL     WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  DELETE MOPREDOCUMXCONFERENCIAS   WHERE idItemDocTransferencia = p_idItemDocTransferencia;
  DELETE MODOCFISCALXCONFERENCIAS  WHERE idItemDocTransferencia = p_idItemDocTransferencia;
END ADD_MODOCTRANSFXITENS_E_CORREL;

/

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (364, 'Permitir troco no cartão', 1, 30001, 'L', '1', 'E', 0, 'N', ' ', ' ');

COMMIT;

DROP TABLE TEMPPRODUTOSESTOQUE;

-- TEMPPRODUTOSESTOQUE
CREATE GLOBAL TEMPORARY TABLE TEMPPRODUTOSESTOQUE
  (
    uniqueMachineID            VARCHAR (18) DEFAULT ' ' NOT NULL,
    contadorSessao             NUMERIC (14,0) DEFAULT 0 NOT NULL,
    produto                    NUMERIC (7,0) DEFAULT 0 NOT NULL,
    ordenacao                  NUMERIC (11,0) DEFAULT 0 NOT NULL,
    produtoImpresso            VARCHAR (60) DEFAULT ' ' NOT NULL,
    descricao                  VARCHAR (120) DEFAULT ' ' NOT NULL,
    descricaoCaracteristicaA   VARCHAR (120) DEFAULT ' ' NOT NULL,
    descricaoCaracteristicaB   VARCHAR (120) DEFAULT ' ' NOT NULL,
    descricaoCaracteristicaC   VARCHAR (120) DEFAULT ' ' NOT NULL,
    descricaoCaracteristicaD   VARCHAR (120) DEFAULT ' ' NOT NULL,
    descricaoCaracteristicaE   VARCHAR (120) DEFAULT ' ' NOT NULL,
    gradeCor                   NUMERIC (4,0) DEFAULT 0 NOT NULL,
    gradePersonalizacao        NUMERIC (4,0) DEFAULT 0 NOT NULL,
    descricaoGradePersonalizac VARCHAR (120) DEFAULT ' ' NOT NULL,
    controlaLote               NUMERIC (1,0) DEFAULT 0 NOT NULL,
    controlaNumeroSerie        NUMERIC (1,0) DEFAULT 0 NOT NULL,
    controleEstoque            NUMERIC (2,0) DEFAULT 0 NOT NULL,
    unidadeMedida              VARCHAR (6) DEFAULT ' ' NOT NULL,
    casasDecimaisUnidadeMedida NUMERIC (1,0) DEFAULT 0 NOT NULL
  ) ON COMMIT PRESERVE ROWS;
ALTER TABLE TEMPPRODUTOSESTOQUE ADD CONSTRAINT TEMPPRODUTOSESTOQUE_PK1 PRIMARY KEY (uniqueMachineID, contadorSessao, produto);
CREATE INDEX TEMPPRODUTOSESTOQUE_K2 ON TEMPPRODUTOSESTOQUE (uniqueMachineID, contadorSessao, ordenacao);
CREATE INDEX TEMPPRODUTOSESTOQUE_K3 ON TEMPPRODUTOSESTOQUE (uniqueMachineID);
CREATE INDEX TEMPPRODUTOSESTOQUE_K4 ON TEMPPRODUTOSESTOQUE (produto);
CREATE INDEX TEMPPRODUTOSESTOQUE_K5 ON TEMPPRODUTOSESTOQUE (uniqueMachineID, contadorSessao);

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (365, 'Sugerir município do estabelecimento ao cadastrar um novo cliente', 1, 10001, 'L', '1', 'E', 0, 'S', ' ', ' ');

COMMIT;

create or replace PROCEDURE ADD_MOFINANCEIROS_AJUSTA_SALDO (
  p_config_349_prazoValidadePont IN NUMBER,
  p_excluindo                    IN NUMBER,
  p_baixa_idBaixaFinanceiro      IN NUMBER,
  p_baixa_idFinanceiro           IN NUMBER,
  p_baixa_dataHora               IN DATE,
  p_baixa_cotacao                IN NUMBER,
  p_baixa_valorBrutoIndexado     IN NUMBER,
  p_baixa_valorBruto             IN NUMBER,
  p_baixa_valorTarifaCartao      IN NUMBER,
  r_financ_saldo                 OUT NUMBER,
  r_financ_saldoIndexado         OUT NUMBER,
  r_financ_efetivado             OUT NUMBER)
IS
  s_financ_idFinanceiro          NUMBER;
  s_financ_cotacao               NUMBER;
  s_financ_valorIndexado         NUMBER;
BEGIN
  SELECT
    COALESCE(MAX(financ.idFinanceiro),0),
    COALESCE(MAX(financ.cotacao),0),
    COALESCE(MAX(financ.valorIndexado),0),
    COALESCE(MAX(financ.valor
      - COALESCE((
          SELECT tarifa.valorTarifaCartao
          FROM MOFINANCEIROXCARTAO tarifa
          WHERE tarifa.idFinanceiro = financ.idFinanceiro
      ),0)
      - COALESCE((
          SELECT SUM(
            CASE
              WHEN financ.cotacao = baixa.cotacao OR financ.cotacao = 0 OR financ.valorIndexado = 0 OR baixa.valorBrutoIndexado = 0
              THEN baixa.valorBruto
              ELSE ROUND (baixa.valorBrutoIndexado * financ.cotacao,2)
            END
            + baixa.valorTarifaCartao)
          FROM MOFINANCEIROXBAIXAS baixa
          WHERE baixa.idFinanceiro = financ.idFinanceiro
          AND baixa.idBaixaFinanceiro <> p_baixa_idBaixaFinanceiro),0)),0),
    COALESCE(MAX(financ.valorIndexado
      - COALESCE((
          SELECT SUM(baixa.valorBrutoIndexado)
          FROM MOFINANCEIROXBAIXAS baixa
          WHERE baixa.idFinanceiro = financ.idFinanceiro
          AND baixa.idBaixaFinanceiro <> p_baixa_idBaixaFinanceiro),0)),0)
  INTO
    s_financ_idFinanceiro,
    s_financ_cotacao,
    s_financ_valorIndexado,
    r_financ_saldo,
    r_financ_saldoIndexado
  FROM MOFINANCEIROS financ
  WHERE financ.idFinanceiro = p_baixa_idFinanceiro;
  IF s_financ_idFinanceiro > 0 THEN
    IF p_excluindo = 0 THEN
      IF s_financ_cotacao = p_baixa_cotacao OR s_financ_cotacao = 0 OR s_financ_valorIndexado = 0 OR p_baixa_valorBrutoIndexado = 0 THEN
        r_financ_saldo := r_financ_saldo - p_baixa_valorBruto;
      ELSE
        r_financ_saldo := r_financ_saldo - ROUND(p_baixa_valorBrutoIndexado * s_financ_cotacao,2);
      END IF;
    r_financ_saldoIndexado := r_financ_saldoIndexado - p_baixa_valorBrutoIndexado;
    END IF;
    IF r_financ_saldo < 0 THEN
      r_financ_saldo := 0;
    END IF;
    IF r_financ_saldoIndexado < 0 THEN
      r_financ_saldoIndexado := 0;
    END IF;
    r_financ_efetivado := CASE WHEN r_financ_saldo = 0 THEN 1 ELSE 0 END;
    UPDATE MOFINANCEIROS SET
      saldo = r_financ_saldo,
      saldoIndexado = r_financ_saldoIndexado,
      efetivado = r_financ_efetivado
    WHERE idFinanceiro = p_baixa_idFinanceiro;
    IF r_financ_efetivado = 1 AND p_excluindo = 0 THEN
      UPDATE MOPONTUACOES SET
        situacaoPontuacao = 'L',
        dataLiberacao = p_baixa_dataHora,
        vencimento = CASE WHEN p_baixa_dataHora IS NULL THEN NULL ELSE TRUNC(p_baixa_dataHora) + p_config_349_prazoValidadePont END
      WHERE idFinanceiro = p_baixa_idFinanceiro
      AND situacaoPontuacao = 'B';
    END IF;
  END IF;
END ADD_MOFINANCEIROS_AJUSTA_SALDO;

/

create or replace PROCEDURE ADD_MOFINANCEIROS_EXCLUI_LOOP (
  p_idFinanceiro                 IN NUMBER,
  p_idsFinanceirosDesconsiderar  IN CLOB,
  p_idsBaixasDesconsiderar       IN CLOB,
  r_idsFinanceirosDesconsiderar  OUT CLOB,
  r_idsBaixasDesconsiderar       OUT CLOB)
IS
  v_auxNumber NUMBER;
  CURSOR c_financExcluir IS
    SELECT idFinanceiroCorrelato idFinanceiro
    FROM MOFINANCEIROXCORRELATO
    WHERE idFinanceiro = p_idFinanceiro
    UNION ALL
    SELECT idFinanceiro
    FROM MOFINANCEIROXCORRELATO
    WHERE idFinanceiroCorrelato = p_idFinanceiro
    UNION ALL
    SELECT a.idNovoFinanceiro idFinanceiro
    FROM MOBAIXAXNOVOFINANCEIRO a
    JOIN MOFINANCEIROXBAIXAS b ON b.idBaixaFinanceiro = a.idBaixaFinanceiro
    WHERE b.idFinanceiro = p_idFinanceiro
    UNION ALL
    SELECT a.idFinanceiro
    FROM MOFINANCEIROXBAIXAS a
    WHERE a.idFinanceiro = p_idFinanceiro
    AND a.baixaAutomatica = 1
    UNION ALL
    SELECT a.idFinanceiro
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXNOVOFINANCEIRO b ON b.idBaixaFinanceiro = a.idBaixaFinanceiro
    WHERE b.idNovoFinanceiro = p_idFinanceiro
    AND a.baixaAutomatica = 1
    UNION ALL
    SELECT a.idFinanceiro
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXBAIXAFINANCEIRO b ON b.idBaixaFinanceiro = a.idBaixaFinanceiro
    JOIN MOFINANCEIROXBAIXAS c ON c.idBaixaFinanceiro = b.idBaixaFinanceiroCorrel
    WHERE c.idFinanceiro = p_idFinanceiro
    AND a.baixaAutomatica = 1
    UNION ALL
    SELECT a.idFinanceiro
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXBAIXAFINANCEIRO b ON b.idBaixaFinanceiroCorrel = a.idBaixaFinanceiro
    JOIN MOFINANCEIROXBAIXAS c ON c.idBaixaFinanceiro = b.idBaixaFinanceiro
    WHERE c.idFinanceiro = p_idFinanceiro
    AND a.baixaAutomatica = 1;
  CURSOR c_baixas IS
    SELECT a.*
    FROM MOFINANCEIROXBAIXAS a
    WHERE a.idFinanceiro = p_idFinanceiro
    UNION ALL
    SELECT a.*
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXNOVOFINANCEIRO b ON b.idBaixaFinanceiro = a.idBaixaFinanceiro
    WHERE b.idNovoFinanceiro = p_idFinanceiro
    UNION ALL
    SELECT a.*
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXBAIXAFINANCEIRO b ON b.idBaixaFinanceiro = a.idBaixaFinanceiro
    JOIN MOFINANCEIROXBAIXAS c ON c.idBaixaFinanceiro = b.idBaixaFinanceiroCorrel
    WHERE c.idFinanceiro = p_idFinanceiro
    UNION ALL
    SELECT a.*
    FROM MOFINANCEIROXBAIXAS a
    JOIN MOBAIXAXBAIXAFINANCEIRO b ON b.idBaixaFinanceiroCorrel = a.idBaixaFinanceiro
    JOIN MOFINANCEIROXBAIXAS c ON c.idBaixaFinanceiro = b.idBaixaFinanceiro
    WHERE c.idFinanceiro = p_idFinanceiro;
BEGIN
  r_idsFinanceirosDesconsiderar := p_idsFinanceirosDesconsiderar;
  r_idsBaixasDesconsiderar      := p_idsBaixasDesconsiderar;  
  -- Somente se não processou o financeiro ainda
  IF r_idsFinanceirosDesconsiderar IS NULL OR r_idsFinanceirosDesconsiderar = ' ' OR INSTR(',' || r_idsFinanceirosDesconsiderar || ',', ',' || LPAD(p_idFinanceiro,14,'0') || ',') = 0 THEN
    IF r_idsFinanceirosDesconsiderar IS NULL OR r_idsFinanceirosDesconsiderar = ' ' THEN
      r_idsFinanceirosDesconsiderar := LPAD(p_idFinanceiro,14,'0');
    ELSE
      r_idsFinanceirosDesconsiderar := r_idsFinanceirosDesconsiderar || ',' || LPAD(p_idFinanceiro,14,'0');
    END IF;
    FOR a IN c_financExcluir
    LOOP
      IF r_idsFinanceirosDesconsiderar IS NULL OR r_idsFinanceirosDesconsiderar = ' ' OR INSTR(',' || r_idsFinanceirosDesconsiderar || ',', ',' || LPAD(a.idFinanceiro,14,'0') || ',') = 0 THEN
        ADD_MOFINANCEIROS_EXCLUI_LOOP (a.idFinanceiro, r_idsFinanceirosDesconsiderar , r_idsBaixasDesconsiderar, r_idsFinanceirosDesconsiderar , r_idsBaixasDesconsiderar);
      END IF;
    END LOOP;
    FOR a IN c_baixas
    LOOP
      -- Somente se não processou a baixa ainda
      IF r_idsBaixasDesconsiderar IS NULL OR r_idsBaixasDesconsiderar = ' ' OR INSTR(',' || r_idsBaixasDesconsiderar || ',', ',' || LPAD(a.idBaixaFinanceiro,14,'0') || ',') = 0 THEN
        IF r_idsBaixasDesconsiderar IS NULL OR r_idsBaixasDesconsiderar = ' ' THEN
          r_idsBaixasDesconsiderar := LPAD(a.idBaixaFinanceiro,14,'0');
        ELSE
          r_idsBaixasDesconsiderar := r_idsBaixasDesconsiderar || ',' || LPAD(a.idBaixaFinanceiro,14,'0');
        END IF;
        -- Se não excluiu Financeiro, volta Saldo
        IF r_idsFinanceirosDesconsiderar IS NULL OR r_idsFinanceirosDesconsiderar = ' ' OR INSTR(',' || r_idsFinanceirosDesconsiderar || ',', ',' || LPAD(a.idFinanceiro,14,'0') || ',') = 0 THEN
          ADD_MOFINANCEIROS_AJUSTA_SALDO (
            0, -- p_config_349_prazoValidadePont
            1, -- p_excluindo
            a.idBaixaFinanceiro,
            a.idFinanceiro,
            a.data,
            a.cotacao,
            a.valorBrutoIndexado,
            a.valorBruto,
            a.valorTarifaCartao,
            v_auxNumber, -- r_financ_saldo
            v_auxNumber, -- r_financ_saldoIndexado
            v_auxNumber); -- r_financ_efetivado
        END IF;
        ADD_MOFINANCEIROXBAIXAS_CORREL (a.idBaixaFinanceiro);
      END IF;
    END LOOP;
    ADD_MOFINANCEIROS_EXCLUICORREL (p_idFinanceiro);
  END IF;
END ADD_MOFINANCEIROS_EXCLUI_LOOP;

/

DROP PROCEDURE ADD_MOFINANCEIROS_RECALC_SALDO;
DROP PROCEDURE ADD_MOFINANCEIROS_VOLTA_SALDO;

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (366, 'Fechar tela do documento após inserir um novo documento', 1, 30001, 'L', '1', 'E', 0, 'N', ' ', ' ');

COMMIT;

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (367, 'Permite utilizar vale troca/presente vencido', 1, 30001, 'A', '1', 'S', 0, 'N', ' ', ' ');

COMMIT;

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (368, 'Imprimir saldo vale troca/presente ao utliliza-lo na venda', 1, 30001, 'L', '1', 'E', 0, 'S', ' ', ' ');

COMMIT;

INSERT INTO SIPERSONALIZACOESCAMPOS (personalizacaoCampo, ordenacao, descricao, ativo, subcategoriaPersonalCampo, tipoCampo, mascara, exibirCampo, tipoArquivo, alteraTipoCampo, alteraExibirCampo, visivelSugestao, modificavelSugestao, obrigatorioSugestao, nomeCampoSugestao, conteudoSugestao, tabelaSistema, observacoes) VALUES (216, 10001010, 'e-mail Principal', 1, 10001, 'A', '60', 'E', 0, 0, 1, 1, 1, 0, 'e-mail Principal', ' ', ' ', ' ');
INSERT INTO SIPERSONALIZACOESCAMPOS (personalizacaoCampo, ordenacao, descricao, ativo, subcategoriaPersonalCampo, tipoCampo, mascara, exibirCampo, tipoArquivo, alteraTipoCampo, alteraExibirCampo, visivelSugestao, modificavelSugestao, obrigatorioSugestao, nomeCampoSugestao, conteudoSugestao, tabelaSistema, observacoes) VALUES (217, 10005012, 'Município Naturalidade', 1, 10005, 'N', '7', 'P', 0, 0, 1, 1, 1, 0, 'Município Naturalidade', ' ', 'SIMUNICIPIOS', ' ');

COMMIT;

INSERT INTO SIVERSOESSISTEMA (idVersaoSistema, versaoAplicativo, dataLiberacaoVersao, possuiConversaoTabelas, atualizada, dataAtualizacaoVersao, observacoes) VALUES (2022001002, '2022.1.2', sysdate, 1, 1, sysdate, ' ');

COMMIT;

--exec dbms_utility.compile_schema('ADDERI');
--exec dbms_stats.gather_schema_stats('ADDERI');

/*
*/