Mudar regra de Baixa dos títulos.

Issue #8 new
Domminii, Inc repo owner created an issue

O sistema permite informar a data de baixa manualmente. Para manter a integridade da informação sera criada uma nova coluna que será inalteravel. Com isso a data de baixa poderá ser personalizada.

Alterações executadas no Banco de Dados?

ALTER TABLE FLUXO_BAIXA_HISTORICO ADD 
DT_REFERENCIA DM_DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL;
UPDATE FLUXO_BAIXA_HISTORICO
SET DT_REFERENCIA = COALESCE(DT_BAIXA, CURRENT_TIMESTAMP)
SET TERM ^ ;
ALTER PROCEDURE FLUXO_PARCELAS_BAIXAR (
    ID_PARCELA CHAR(10) CHARACTER SET WIN1252,
    VL_BAIXA NUMERIC(15,2),
    TP_BAIXA CHAR(1) CHARACTER SET WIN1252,
    ID_BANCO CHAR(10) CHARACTER SET WIN1252,
    DATA_DA_BAIXA TIMESTAMP )
AS
DECLARE VARIABLE dt_baixa TIMESTAMP;
DECLARE VARIABLE dt_exclusao DATE;
DECLARE VARIABLE nr_parcela VARCHAR(30);
DECLARE VARIABLE vl_apagar NUMERIC(15,2);
BEGIN
  SELECT fpa.dt_baixa, fpa.dt_exclusao, fpa.nr_parcela, fpa.vl_parcela_liquida
  FROM fluxo_parcelas_abertas fpa
  WHERE (fpa.id = :id_parcela)
  INTO :dt_baixa, :dt_exclusao, :nr_parcela, :vl_apagar;

  IF (NOT dt_baixa IS NULL) THEN
    EXCEPTION fluxo_baixa 'não é possível baixar parcela ('||nr_parcela||'). Parcela já está baixada';

  IF (NOT dt_exclusao IS NULL) THEN
    EXCEPTION fluxo_baixa 'não é possível baixar parcela ('||nr_parcela||'). Parcela está excluída';

  /* A pedido da speed graph agora é permitido informar a data da baixa, caso não tenha sido informada então será a data atual*/
  dt_baixa = DATA_DA_BAIXA;  
  IF( dt_baixa IS NULL) THEN
    dt_baixa = CURRENT_TIMESTAMP;  

  IF ((tp_baixa = 'T') OR (vl_baixa >= vl_apagar)) THEN
  BEGIN
    /* atualizo o campo DT_BAIXA com a data atual e VL_PAGO com o valor da baixa */
    UPDATE fluxo_parcelas
    SET dt_baixa = dt_baixa
    WHERE id = :id_parcela;
  END

  INSERT INTO fluxo_baixa_historico
    (id_parcela, vl_baixa, dt_baixa, vl_restante, id_banco, dt_referencia)
  VALUES
    (:id_parcela, :vl_baixa, :dt_baixa, (:vl_apagar - :vl_baixa), :id_banco, CURRENT_TIMESTAMP);

  SUSPEND;
END^
SET TERM ; ^


GRANT EXECUTE
 ON PROCEDURE FLUXO_PARCELAS_BAIXAR TO ROLE F_USER;

GRANT EXECUTE
 ON PROCEDURE FLUXO_PARCELAS_BAIXAR TO  SYSDBA;

Comments (2)

  1. Log in to comment