SET TERM ^ ;
CREATE OR ALTER TRIGGER TTBPDV_DEVOLUCAO_TROCA_ITEM_B0I FOR TBPDV_DEVOLUCAO_TROCA_ITEM
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable ITEM_EXISTENTE INTEGER;
begin
    ITEM_EXISTENTE = COALESCE((SELECT FIRST 1 A.ID FROM TBPDV_DEVOLUCAO_TROCA_ITEM A
                               WHERE A.ITEM_SEQUENCIA     = NEW.ITEM_SEQUENCIA
                               AND A.ITEM_ID            = NEW.ITEM_ID
                               AND A.DOCUMENTO_CONTROLE = NEW.DOCUMENTO_CONTROLE
                               AND A.TIPO_DOCUMENTO     = NEW.TIPO_DOCUMENTO
                               AND A.ID                <> NEW.ID
                               and a.PDV_DEVOLUCAO_ID   = new.PDV_DEVOLUCAO_ID),0);

    IF(ITEM_EXISTENTE > 0)THEN
    BEGIN
       EXCEPTION "..." 'ITEM SEQ.'||FN_LPAD(NEW.ITEM_SEQUENCIA,3,0)||
                        IIF(NEW.TIPO_DOCUMENTO = '1',COALESCE((SELECT FIRST 1 'NF.'||FN_LPAD(B.NUMERO_NOTAFISCAL,7,0)||', SERIE:'||FN_LPAD(B.SERIE,3,0)||', DT.EMISSAO:'||FN_DATE(B.DATA_EMISSAO,'DD/MM/YYYY') FROM TBNFS B, TBNFS_ITEM C WHERE B.CONTROLE = C.NFS_CONTROLE AND C.CONTROLE = NEW.ITEM_ID),''),
                        COALESCE((SELECT FIRST 1 'CF.'||FN_LPAD(D.NUMERO_CFE,6,0)||', SERIE:'||FN_LPAD(D.SERIE,3,0)||', DT.EMISSAO:'||FN_DATE(D.DATA_EMISSAO,'DD/MM/YYYY') FROM TBPDV_CFE D, TBPDV_CFE_ITEM E WHERE D.ID = E.PDV_CFE_ID AND E.ID = NEW.ITEM_ID),''))
                        ||'<BR>'||IIF(NEW.TIPO_DOCUMENTO = '1',COALESCE((SELECT FIRST 1 'PRODUTO: '||FN_LPAD(P.CODIGO,6,0)||' - '||P.DESCRICAO FROM TBNFS_ITEM C, TBPRODUTO P WHERE P.CODIGO = C.PRODUTO_CODIGO AND C.CONTROLE = NEW.ITEM_ID),''),
                        COALESCE((SELECT FIRST 1 'PRODUTO: '||FN_LPAD(P.CODIGO,6,0)||' - '||P.DESCRICAO FROM TBPDV_CFE_ITEM E, TBPRODUTO P WHERE P.CODIGO = e.PRODUTO_ID AND E.ID = NEW.ITEM_ID),''))||'<BR> VALOR R$ '||COALESCE((NEW.QUANTIDADE*NEW.VALOR_UNITARIO),0.00)||' <BR> JA EXISTENTE NESTA DEVOLUCAO, INCLUSAO CANCELADA.';
    END

    IF(NEW.ID IS NULL) THEN
    BEGIN
      NEW.ID = GEN_ID(GTBPDV_DEVOLUCAO_TROCA_ITEM,1);
    END
END
^ SET TERM ; ^