CREATE TABLE TBADIANTAMENTO_PRE_PEDIDOS (
    ID INTEGER NOT NULL,
    ADIANTAMENTO_ID INTEGER,
    PRE_PEDIDO_ID INTEGER,
    VALOR NUMERIC(15,2),
    DATAHORA TIMESTAMP DEFAULT 'NOW' NOT NULL);

ALTER TABLE TBADIANTAMENTO_PRE_PEDIDOS
ADD CONSTRAINT PK_TBADIANTAMENTO_PRE_PEDIDOS
PRIMARY KEY (ID);

CREATE SEQUENCE GTBADIANTAMENTO_PRE_PEDIDOS;

SET TERM ^ ;

create trigger ttbadiant_pre_pedidos_b01i for tbadiantamento_pre_pedidos
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbadiantamento_pre_pedidos,1);
end
^

SET TERM ; ^


SET TERM ^ ;

CREATE OR ALTER trigger ttbadiant_pre_pedidos_b02i for tbadiantamento_pre_pedidos
active before insert position 1
AS
declare variable VALOR_TOTAL_ADIANT NUMERIC(15,2);
declare variable VALOR_TOTAL_PRE_PEDIDO NUMERIC(15,2);
BEGIN
    IF(COALESCE(NEW.VALOR, 0) = 0) THEN
    BEGIN
        :VALOR_TOTAL_ADIANT = COALESCE((SELECT FIRST 1 SUM(T.VALOR) FROM TBPDV_MOVIMENTO_ANTECIPACAO T WHERE T.AGRUPAMENTO_ID = NEW.ADIANTAMENTO_ID), 0);

        :VALOR_TOTAL_PRE_PEDIDO = COALESCE((SELECT FIRST 1 SUM(T.VALOR_LIQUIDO) FROM TBPDV_CONFERENCIA_ITEM T WHERE T.PDV_CONFERENCIA_ID = NEW.PRE_PEDIDO_ID), 0);

        IF(:VALOR_TOTAL_ADIANT > :VALOR_TOTAL_PRE_PEDIDO) THEN
        BEGIN
            NEW.VALOR = :VALOR_TOTAL_PRE_PEDIDO;
        END ELSE IF(:VALOR_TOTAL_ADIANT <= :VALOR_TOTAL_PRE_PEDIDO) THEN
        BEGIN   
            NEW.VALOR = :VALOR_TOTAL_ADIANT;
        END
    END
END
^

SET TERM ; ^



CREATE INDEX ITBADIANTAMENTO_PRE_PEDIDOS_01
ON TBADIANTAMENTO_PRE_PEDIDOS (ADIANTAMENTO_ID);

CREATE INDEX ITBADIANTAMENTO_PRE_PEDIDOS_02
ON TBADIANTAMENTO_PRE_PEDIDOS (PRE_PEDIDO_ID);

