CREATE OR ALTER TRIGGER TTBPONTO_MARCACAO_B01I FOR TBPONTO_MARCACAO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE ID BIGINT;
BEGIN

    HISTORICO = '';

    IF(NEW.TIPO = 'I') THEN
    BEGIN
       HISTORICO = HISTORICO||'Marc.Ponto '||NEW.HORAMINUTO||'('||NEW.TIPO||') Incluida.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        ID = COALESCE((SELECT FIRST 1 A.ID FROM TBPONTO_CARTAO A
        WHERE A.COLABORADOR_CODIGO = NEW.COLABORADOR_CODIGO AND A.DATA = NEW.DATA),0);
        if (ID <> 0) then
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_CARTAO',ID, FN_ELIPSES(HISTORICO,500));
        END
    END
END;


CREATE TRIGGER TTBPONTO_MARCACAO_B01U FOR TBPONTO_MARCACAO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE ID BIGINT;
BEGIN

    HISTORICO = '';

    IF(OLD.TIPO = 'O') THEN
    BEGIN
        IF(NEW.TIPO = 'D') THEN
        BEGIN
            HISTORICO = HISTORICO||'Marc.Ponto '||old.HORAMINUTO||': '||OLD.TIPO||' -> '||NEW.TIPO;
        END
    END

    IF(OLD.TIPO = 'D') THEN
    BEGIN
        IF(NEW.TIPO = 'O') THEN
        BEGIN
            HISTORICO = HISTORICO||'Marc.Ponto '||old.HORAMINUTO||': '||OLD.TIPO||' -> '||NEW.TIPO;
        END
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        ID = COALESCE((SELECT FIRST 1 A.ID FROM TBPONTO_CARTAO A
        WHERE A.COLABORADOR_CODIGO = NEW.COLABORADOR_CODIGO AND A.DATA = NEW.DATA),0);
        if (ID <> 0) then
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_CARTAO',ID, FN_ELIPSES(HISTORICO,500));
        END
    END
END;

CREATE TRIGGER TTBPONTO_MARCACAO_B01D FOR TBPONTO_MARCACAO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE ID BIGINT;
BEGIN

    HISTORICO = '';

    IF(OLD.TIPO = 'I' or OLD.TIPO = 'P') THEN
    BEGIN
       HISTORICO = HISTORICO||'Marc.Ponto '||OLD.HORAMINUTO||'('||OLD.TIPO||') Excluida.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        ID = COALESCE((SELECT FIRST 1 A.ID FROM TBPONTO_CARTAO A
        WHERE A.COLABORADOR_CODIGO = OLD.COLABORADOR_CODIGO AND A.DATA = OLD.DATA),0);
        IF (ID <> 0) then
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_CARTAO',ID, FN_ELIPSES(HISTORICO,500));
        END
    END
END;

