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)
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)
    VALUES (:ESTABELECIMENTO_ID, :TX_ID, :TEXTO_IMG_QRCODE, :CLIENTE_ID, :COLABORADOR_ID, :NOME, :VALOR,
        :DATA_TRANSACAO, :DATA_CRIACAO, :DATA_EXPIRACAO, :SITUACAO, :STATUS)
    MATCHING (ESTABELECIMENTO_ID, TX_ID)
    RETURNING ID INTO :ID;

  SUSPEND;

END
