CREATE TABLE TBREFERENCIA_LINHA (
    ID INTEGER NOT NULL,
    DESCRICAO VARCHAR(20));

ALTER TABLE TBREFERENCIA_LINHA
ADD CONSTRAINT PK_TBREFERENCIA_LINHA
PRIMARY KEY (ID);

COMMENT ON TABLE TBREFERENCIA_LINHA IS 'tabela com as referencias das linhas';

CREATE SEQUENCE GTBREFERENCIA_LINHA;

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

ALTER TABLE TBMODELO_LINHA DROP DESCRICAO_CATALOGO;

ALTER TABLE TBMODELO_LINHA ADD REFERENCIA_ID INTEGER;

ALTER TABLE TBCLIENTE_TIPO
    ADD DESCRICAO_2 VARCHAR(20);

UPDATE tbcliente_tipo S SET S.descricao_2 = S.descricao;

CREATE OR ALTER trigger ttbcliente_tipo_b01u for tbcliente_tipo
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO',NEW.codigo, HISTORICO);
    END
end;

ALTER TABLE TBCLIENTE_TIPO DROP DESCRICAO;

ALTER TABLE TBCLIENTE_TIPO
    ADD DESCRICAO VARCHAR(50);

CREATE OR ALTER trigger ttbcliente_tipo_b01u for tbcliente_tipo
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCLIENTE_TIPO',NEW.codigo, HISTORICO);
    END
end;

ALTER TABLE TBCLIENTE_TIPO DROP DESCRICAO_2;

CREATE TABLE TBREFERENCIA_PRECO (
    ID INTEGER NOT NULL,
    REFERENCIA_ID INTEGER,
    CLIENTE_TIPO_ID INTEGER,
    PAGAMENTO_ID INTEGER,
    QTD_MIN INTEGER,
    QTD_MAX INTEGER,
    VALOR NUMERIC(18,4));

ALTER TABLE TBREFERENCIA_PRECO
ADD CONSTRAINT PK_TBREFERENCIA_PRECO
PRIMARY KEY (ID);

CREATE SEQUENCE GTBREFERENCIA_PRECO;

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

ALTER TABLE TBREFERENCIA_PRECO
    ADD DATA_INICIO DATE,
    ADD DATA_FIM DATE;

COMMENT ON COLUMN TBREFERENCIA_PRECO.DATA_INICIO IS
'data de inicio de validade';

COMMENT ON COLUMN TBREFERENCIA_PRECO.DATA_FIM IS
'data fim da validade';

ALTER TABLE TBPAGAMENTO_CONDICAO
    ADD GRUPO VARCHAR(20);

ALTER TABLE TBPAGAMENTO_CONDICAO
    ALTER GRUPO TYPE VARCHAR(150) CHARACTER SET UTF8;

COMMENT ON COLUMN TBPAGAMENTO_CONDICAO.GRUPO IS
'iniciar e finalizar os grupos por # ex. #COLANTE#BOJO#';

ALTER TABLE TBREFERENCIA_PRECO
    ADD PAGAMENTO_CONDICAO VARCHAR(100);

CREATE OR ALTER trigger ttbccusto_cota_b0u_03 for tbccusto_cota
active before update position 0
As
/*******************************************
           Atualiza os campos
        DATAHORA UPDATE E DELETE        
*******************************************/
Begin
    If ( New.StatusExclusao = '0' and Old.StatusExclusao = '0' ) Then
    Begin
        New.DataHora_Update = Current_TimesTamp;
    End
    Else
    if ( New.STATUSEXCLUSAO = '1' and Old.StatusExclusao = '0') Then
    Begin
        New.DataHora_Delete = Current_TimesTamp;
        update tbccusto_cota_outros o set o.statusexclusao = '1' where o.ccusto_cota_id = new.id;
        update tbccusto_cota_extra  e set e.statusexclusao = '1' where e.ccusto_cota_id = new.id;
    End
End;


ALTER TABLE TBREFERENCIA_PRECO
    ADD MOEDA VARCHAR(10);

COMMENT ON COLUMN TBREFERENCIA_PRECO.MOEDA IS
'REAL - R$
DOLAR -U$';

alter table TBREFERENCIA_PRECO
alter ID position 1;

alter table TBREFERENCIA_PRECO
alter REFERENCIA_ID position 2;

alter table TBREFERENCIA_PRECO
alter CLIENTE_TIPO_ID position 3;

alter table TBREFERENCIA_PRECO
alter PAGAMENTO_ID position 4;

alter table TBREFERENCIA_PRECO
alter QTD_MIN position 5;

alter table TBREFERENCIA_PRECO
alter QTD_MAX position 6;

alter table TBREFERENCIA_PRECO
alter VALOR position 7;

alter table TBREFERENCIA_PRECO
alter MOEDA position 8;

alter table TBREFERENCIA_PRECO
alter MOEADA position 9;

alter table TBREFERENCIA_PRECO
alter DATA_INICIO position 10;

alter table TBREFERENCIA_PRECO
alter DATA_FIM position 11;

alter table TBREFERENCIA_PRECO
alter PAGAMENTO_CONDICAO position 12;

ALTER TABLE TBREFERENCIA_PRECO DROP MOEADA;

CREATE OR ALTER function fn_sku_bloqueado (
    modelo_id integer,
    cor_id integer)
returns integer
as
declare variable ret integer;
begin
  RET = coalesce((
            select
                count(y.TAMANHO) - sum(cast(y.BLQ_PED as integer)) as TAM_LIBERADOS
            from(
                select
                    x.*,
                    fn_array(TAMANHOS,x.TAMANHO ,'#') as ABILITADO
                from(
                    select
                        m.*,
                        (select l.t01||'#'||l.t02||'#'||l.t03||'#'||l.t04||'#'||l.t05||'#'||l.t06||'#'||l.t07||'#'||l.t08||'#'||l.t09||'#'||l.t10||'#'||
                                l.t11||'#'||l.t12||'#'||l.t13||'#'||l.t14||'#'||l.t15||'#'||l.t16||'#'||l.t17||'#'||l.t18||'#'||l.t19||'#'||l.t20||'#'  from tbmodelo l where l.codigo = m.modelo_id) as TAMANHOS
                    
                    from TBMODELO_BLOQUEIO M, tbproduto p
                    where m.modelo_id   = :MODELO_ID
                    and m.cor_id        = :COR_ID
                    and p.modelo_codigo = m.modelo_id
                    and p.cor_codigo    = m.cor_id
                ) x
            ) y
            where ABILITADO = 1),0);

  return RET;
end;




