CREATE GENERATOR GTBCLIENTE_SUBTIPO_UF;

CREATE TABLE TBCLIENTE_SUBTIPO_UF (
    ID          INTEGER NOT NULL PRIMARY KEY,
    SUBTIPO_ID  INTEGER,
    UF        VARCHAR(2)
);

CREATE OR ALTER TRIGGER TTBCLIENTE_SUBTIPO_UF_B01I FOR TBCLIENTE_SUBTIPO_UF
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(GTBCLIENTE_SUBTIPO_UF,1);
end;

CREATE OR ALTER TRIGGER TTBCLIENTE_SUBTIPO_UF_B02I FOR TBCLIENTE_SUBTIPO_UF
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TIPO_CLIENTE INTEGER;
BEGIN
    
    HISTORICO = '';
    TIPO_CLIENTE = COALESCE((SELECT FIRST 1 A.CLIENTE_TIPO_ID FROM TBCLIENTE_SUBTIPO A WHERE A.ID = NEW.SUBTIPO_ID),0);

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'UF:'||NEW.UF||' INCLUIDA NO TIPO DO PEDIDO: '||FN_LPAD(NEW.SUBTIPO_ID,4,0);
    END

    IF (HISTORICO <> '' AND TIPO_CLIENTE > 0) THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO', TIPO_CLIENTE, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCLIENTE_SUBTIPO_UF_B01D FOR TBCLIENTE_SUBTIPO_UF
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TIPO_CLIENTE INTEGER;
BEGIN
    
    HISTORICO = '';
    TIPO_CLIENTE = COALESCE((SELECT FIRST 1 A.CLIENTE_TIPO_ID FROM TBCLIENTE_SUBTIPO A WHERE A.ID = OLD.SUBTIPO_ID),0);

    IF(OLD.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'UF:'||OLD.UF||' EXCLUIDA NO TIPO DO PEDIDO:'||FN_LPAD(OLD.SUBTIPO_ID,4,0);
    END

    IF (HISTORICO <> '' AND TIPO_CLIENTE > 0) THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO', TIPO_CLIENTE, HISTORICO);
    END
END;
