CREATE OR ALTER trigger ttbestoque_cliente_item_b02i for tbestoque_cliente_item
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE MODELO_DESC VARCHAR(100);
DECLARE VARIABLE COR_DESC VARCHAR(100);

BEGIN

    HISTORICO = '';
    
    MODELO_DESC = COALESCE((SELECT FIRST 1 M.DESCRICAO FROM TBMODELO M WHERE M.CODIGO = NEW.MODELO_ID), '');
    COR_DESC    = COALESCE((SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID), '');

    IF ( NEW.ESTOQUE_CLIENTE_ID > 0 AND NEW.ID > 0 ) THEN
    BEGIN
        HISTORICO = HISTORICO||' ITEM INCLUIDO: MODELO:'||NEW.MODELO_ID||' - '||MODELO_DESC||', COR: '||COR_DESC||', QTD: '||NEW.QUANTIDADE;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBESTOQUE_CLIENTE',NEW.ESTOQUE_CLIENTE_ID, HISTORICO);
    END
END;


CREATE OR ALTER trigger ttbestoque_cliente_item_b01d for tbestoque_cliente_item
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE MODELO_DESC VARCHAR(100);
DECLARE VARIABLE COR_DESC VARCHAR(100);

BEGIN

    HISTORICO = '';
    
    MODELO_DESC = COALESCE((SELECT FIRST 1 M.DESCRICAO FROM TBMODELO M WHERE M.CODIGO = OLD.MODELO_ID), '');
    COR_DESC    = COALESCE((SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = OLD.COR_ID), '');

    IF ( OLD.ESTOQUE_CLIENTE_ID > 0 AND OLD.ID > 0 ) THEN
    BEGIN
        HISTORICO = HISTORICO||' ITEM EXCLUIDO: MODELO:'||OLD.MODELO_ID||' - '||MODELO_DESC||', COR: '||COR_DESC||', QTD: '||OLD.QUANTIDADE;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBESTOQUE_CLIENTE',OLD.ESTOQUE_CLIENTE_ID, HISTORICO);
    END
END;


CREATE OR ALTER trigger ttbestoque_cliente_item_b01u for tbestoque_cliente_item
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE COR_DESC VARCHAR(100);
BEGIN

    HISTORICO = '';

    COR_DESC    = COALESCE((SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID), '');

    IF (OLD.MODELO_ID IS DISTINCT FROM NEW.MODELO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOD: '||COALESCE(OLD.MODELO_ID, 0)||'->'||COALESCE(NEW.MODELO_ID, 0);
    END

    IF (OLD.COR_ID IS DISTINCT FROM NEW.COR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR: '||COALESCE(OLD.COR_ID, 0)||'->'||COALESCE(NEW.COR_ID, 0);
    END

    IF(OLD.TAMANHO IS DISTINCT FROM NEW.TAMANHO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAM: '||COALESCE(OLD.TAMANHO, '')||'->'||COALESCE(NEW.TAMANHO, '');
    END

    IF(OLD.QUANTIDADE <> NEW.QUANTIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' QTD: '||OLD.QUANTIDADE||'->'||NEW.QUANTIDADE;
    END

    IF(OLD.PERIODO <> NEW.PERIODO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERIODO: '||FORMATDATE(OLD.PERIODO)||'->'||FORMATDATE(NEW.PERIODO);
    END

    IF (HISTORICO <> '') THEN
    BEGIN

        HISTORICO = ' ITEM: MOD:'||OLD.MODELO_ID||', COR: '||COR_DESC||', QUANTIDADE: '||OLD.QUANTIDADE||' ALTERADO: '||HISTORICO;


        EXECUTE PROCEDURE SPI_HISTORICO('TBESTOQUE_CLIENTE', NEW.ESTOQUE_CLIENTE_ID, HISTORICO);
    END

END;



