SET TERM ^ ;

CREATE OR ALTER procedure SPUI_TRANSACAO_PIX (
    ESTABELECIMENTO_ID integer,
    TX_ID varchar(500),
    TEXTO_IMG_QRCODE varchar(500),
    CLIENTE_ID integer,
    COLABORADOR_ID integer,
    NOME varchar(500),
    VALOR numeric(15,2),
    DATA_TRANSACAO date,
    DATA_CRIACAO timestamp,
    DATA_EXPIRACAO timestamp,
    SITUACAO integer = 1,
    STATUS integer = 0,
    VALOR_TOTAL_REAL numeric(15,2) = 0,
    VALOR_DESCONTO numeric(15,2) = 0,
    PSP_PIX_CONFIG_ID INTEGER = 0)
returns (
    ID integer)
as
BEGIN

    UPDATE OR INSERT INTO TBTRANSACAO_PIX (ESTABELECIMENTO_ID, TX_ID, TEXTO_IMG_QRCODE, CLIENTE_ID, COLABORADOR_ID,
        NOME, VALOR, DATA_TRANSACAO, DATA_CRIACAO, DATA_EXPIRACAO, SITUACAO, STATUS, VALOR_TOTAL_REAL, VALOR_DESCONTO, PSP_PIX_CONFIG_ID)
    VALUES (:ESTABELECIMENTO_ID, :TX_ID, :TEXTO_IMG_QRCODE, :CLIENTE_ID, :COLABORADOR_ID, :NOME, :VALOR,
        :DATA_TRANSACAO, :DATA_CRIACAO, :DATA_EXPIRACAO, :SITUACAO, :STATUS, :VALOR_TOTAL_REAL, :VALOR_DESCONTO, :PSP_PIX_CONFIG_ID)
    MATCHING (ESTABELECIMENTO_ID, TX_ID)
    RETURNING ID INTO :ID;

  SUSPEND;

END
^

SET TERM ; ^

