CREATE TABLE TBINVENTARIO_MAT_PRIMA_DETALHE (
    ID INTEGER NOT NULL,
    PRODUTO_ID INTEGER,
    TAMANHO INTEGER,
    SALDO NUMERIC(15,4),
    QUANTIDADE NUMERIC(15,4),
	INVENTARIO_ID INTEGER,
    DATAHORA TIMESTAMP DEFAULT 'NOW');

ALTER TABLE TBINVENTARIO_MAT_PRIMA_DETALHE
ADD CONSTRAINT PK_TBINVENTARIO_MAT_PRIMA_DETAL
PRIMARY KEY (ID);

CREATE SEQUENCE GTBINVENTARIO_MAT_PRIMA_DETALHE;

create trigger ttbinv_mat_prima_detalhe_b01i for tbinventario_mat_prima_detalhe
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbinventario_mat_prima_detalhe,1);
end;


CREATE trigger tbinv_mat_prima_detalhe_b02i for tbinventario_mat_prima_detalhe
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PRODUTO_DESC VARCHAR(100);
BEGIN

    HISTORICO = '';
    PRODUTO_DESC = COALESCE((SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = NEW.PRODUTO_ID), '');

    IF ( NEW.INVENTARIO_ID > 0 AND NEW.ID > 0 ) THEN
    BEGIN
        HISTORICO = HISTORICO||' PRODUTO INCLUIDO: '||FN_LPAD(NEW.PRODUTO_ID, 6, '0')||' - '||PRODUTO_DESC||' TAM: '||COALESCE(FN_TAMANHO_PRODUTO(NEW.PRODUTO_ID, NEW.TAMANHO), '');
    END

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



CREATE OR ALTER trigger ttbinv_mat_prima_detalhe_b01u for tbinventario_mat_prima_detalhe
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PRODUTO_DESC VARCHAR(100);
BEGIN

    HISTORICO = '';
    PRODUTO_DESC = COALESCE((SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = NEW.PRODUTO_ID), '');

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' PROD: '||FN_LPAD(NEW.PRODUTO_ID, 6, '0')||' - '||PRODUTO_DESC||', TAM: '||COALESCE(FN_TAMANHO_PRODUTO(NEW.PRODUTO_ID, NEW.TAMANHO), '')||' ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBINVENTARIO_MATERIA_PRIMA',NEW.INVENTARIO_ID, HISTORICO);
    END
END;


CREATE trigger ttbinv_mat_prima_detalhe_b01d for tbinventario_mat_prima_detalhe
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PRODUTO_DESC VARCHAR(100);
BEGIN

    HISTORICO = '';
    PRODUTO_DESC = COALESCE((SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = OLD.PRODUTO_ID), '');

    IF ( OLD.INVENTARIO_ID > 0 AND OLD.ID > 0 ) THEN
    BEGIN
        HISTORICO = HISTORICO||' PRODUTO EXCLUIDO: '||FN_LPAD(OLD.PRODUTO_ID, 6, '0')||' - '||PRODUTO_DESC||' TAM: '||COALESCE(FN_TAMANHO_PRODUTO(OLD.PRODUTO_ID, OLD.TAMANHO), '');
    END

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




