SET DEFINE OFF;

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (369, 'Pesquisar pelo fone ao pesquisar pessoas', 1, 10002, 'L', '1', 'E', 0, 'N', ' ', ' ');

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
  v_idFinanceiro  NUMBER;
  v_cotacao       NUMBER;
  v_valorIndexado NUMBER;
  v_saldo         NUMBER;
  v_saldoIndexado NUMBER;
  v_efetivado     NUMBER;
BEGIN
  SELECT
    COALESCE(MAX(a.idFinanceiro),0),
    COALESCE(MAX(a.cotacao),0),
    COALESCE(MAX(a.valorIndexado),0),
    COALESCE(MAX(a.saldo),0),
    COALESCE(MAX(a.saldoIndexado),0)
  INTO
    v_idFinanceiro,
    v_cotacao,
    v_valorIndexado,
    v_saldo,
    v_saldoIndexado
  FROM (
    SELECT
      financ.idFinanceiro,
      financ.cotacao,
      financ.valorIndexado,
      ( financ.valor
        - COALESCE(tarifa.valorTarifaCartao,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)
      ) saldo,
      ( financ.valorIndexado
        - COALESCE((
            SELECT SUM(baixa.valorBrutoIndexado)
            FROM MOFINANCEIROXBAIXAS baixa
            WHERE baixa.idFinanceiro = financ.idFinanceiro
            AND baixa.idBaixaFinanceiro <> p_baixa_idBaixaFinanceiro),0)
      ) saldoIndexado
    FROM MOFINANCEIROS financ
    LEFT JOIN MOFINANCEIROXCARTAO tarifa ON tarifa.idFinanceiro = financ.idFinanceiro
    WHERE financ.idFinanceiro = p_baixa_idFinanceiro
    ) a;
  IF v_idFinanceiro > 0 THEN
    IF p_excluindo = 0 THEN
      IF v_cotacao             = p_baixa_cotacao
        OR v_cotacao           = 0
        OR v_valorIndexado     = 0
        OR p_baixa_valorBrutoIndexado = 0
      THEN
        v_saldo     := v_saldo - p_baixa_valorBruto;
      ELSE
        v_saldo     := v_saldo - ROUND(p_baixa_valorBrutoIndexado * v_cotacao,2);
      END IF;
      v_saldoIndexado := v_saldoIndexado - p_baixa_valorBrutoIndexado;
    END IF;
    IF v_saldo < 0 THEN
      v_saldo := 0;
    END IF;
    IF v_saldoIndexado < 0 THEN
      v_saldoIndexado := 0;
    END IF;
    v_efetivado := CASE WHEN v_saldo = 0 THEN 1 ELSE 0 END;
    UPDATE MOFINANCEIROS SET
      saldo            = v_saldo,
      saldoIndexado    = v_saldoIndexado,
      efetivado        = v_efetivado
    WHERE idFinanceiro = p_baixa_idFinanceiro;
    IF v_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;
  r_financ_saldo         := v_saldo;
  r_financ_saldoIndexado := v_saldoIndexado;
  r_financ_efetivado     := v_efetivado;
END ADD_MOFINANCEIROS_AJUSTA_SALDO;

/

INSERT INTO SICONFIGURACOES (configuracao, descricao, ativo, subcategoriaConfiguracao, tipoCampo, mascara, exibirCampo, tipoArquivo, conteudoSugestao, tabelaSistema, observacoes) values (370, 'Permitir cadastrar produto com "EAN / GTIN" repetido', 1, 20001, 'A', '1', 'S', 0, 'S', ' ', 'Desmarcando esta configuração, não será permitido criar um produto com "EAN / GTIN" repetido.');

COMMIT;

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

COMMIT;

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

/*
*/