SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPDV_CAIXA_B01D FOR TBPDV_CAIXA
ACTIVE BEFORE DELETE POSITION 3
AS
DECLARE VARIABLE HISTORICO            VARCHAR(500);
DECLARE VARIABLE EXISTE_MOVIMENTACOES INTEGER;
BEGIN

    EXISTE_MOVIMENTACOES = COALESCE((SELECT FIRST 1 MOV.ID FROM TBPDV_MOVIMENTO_CAIXA MOV WHERE MOV.PDV_CAIXA_ID = OLD.ID AND MOV.STATUS <> 0),0);

    IF(EXISTE_MOVIMENTACOES > 0)THEN
    BEGIN
       EXCEPTION "..." 'JA EXISTEM MOVIMENTACOES DO PDV '||COALESCE((SELECT FIRST 1 FN_LPAD(PDV.ID,4,0)||' - '||PDV.DESCRICAO FROM TBPDV PDV WHERE PDV.ID = OLD.PDV_ID),'')||' QUE UTILIZAM ESTE CAIXA.<BR> EXCLUSAO CANCELADA.';
    END

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'CAIXA ID:'||FN_LPAD(OLD.ID,4,0)||' - '||OLD.DESCRICAO||' EXCLUIDO.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPDV',OLD.PDV_ID, HISTORICO);
    END
END^

CREATE OR ALTER TRIGGER TTBPDV_OPERADOR_B01D FOR TBPDV_OPERADOR
ACTIVE BEFORE DELETE POSITION 9
AS

DECLARE VARIABLE NOME                 VARCHAR(200);
DECLARE VARIABLE HISTORICO            VARCHAR(1000);
DECLARE VARIABLE EXISTE_CUPONS        INTEGER;
DECLARE VARIABLE EXISTE_MOVIMENTACOES INTEGER;
BEGIN
    NOME                 = COALESCE((SELECT FIRST 1 IIF(CHAR_LENGTH(A.NOME) > 0, A.NOME, A.USUARIO) FROM TBUSUARIO A WHERE A.CODIGO = OLD.USUARIO_ID),'');
    EXISTE_CUPONS        = COALESCE((SELECT FIRST 1 PDV_CFE.ID FROM TBPDV_CFE PDV_CFE WHERE PDV_CFE.OPERADOR_ID = OLD.ID),0);
    EXISTE_MOVIMENTACOES = COALESCE((SELECT FIRST 1 MOV.ID FROM TBPDV_MOVIMENTO MOV WHERE (MOV.OPERADOR_ABERTURA = OLD.USUARIO_ID OR MOV.OPERADOR_FECHAMENTO = OLD.USUARIO_ID)),0);

    IF(EXISTE_CUPONS > 0)THEN
    BEGIN
        EXCEPTION "..." 'JA EXISTEM DOCUMENTOS REGISTRADOS NO SISTEMA COM ESTE OPERADOR.<BR> EXCLUSAO CANCELADA.';
    END

    IF(EXISTE_MOVIMENTACOES > 0)THEN
    BEGIN
        EXCEPTION "..." 'JA EXISTEM ABERTURAS/FECHAMENTOS DESTE OPERADOR NO PDV '||COALESCE((SELECT FIRST 1 FN_LPAD(PDV.ID,4,0)||' - '||PDV.DESCRICAO FROM TBPDV PDV WHERE PDV.ID = OLD.PDV_ID),'')||'.<BR> EXCLUSAO CANCELADA.';
    END
    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OPERADOR:'||FN_LPAD(OLD.ID,4,0)||' - '||NOME||' EXCLUIDO.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPDV',OLD.PDV_ID, HISTORICO);
    END
END^

SET TERM ; ^

