CREATE INDEX ITBESTABELECIMENTO_05
ON TBESTABELECIMENTO (PRODUTIVO);

ALTER TABLE TBESTABELECIMENTO ALTER COLUMN PRODUTIVO
SET DEFAULT 0;

SET TERM ^ ;

CREATE OR ALTER procedure SPC_USUARIO_ESTABELECIMENTOS (
    CODIGO_1 integer,
    PROCESSO_PRODUTIVO INTEGER = 0)
returns (
    CODIGO integer,
    NOMEFANTASIA varchar(20),
    REGIME_TRIBUTARIO integer,
    BASELEGAL_ID integer,
    UF varchar(2))
as
declare variable CONTADOR integer;
BEGIN
    
    CONTADOR = 0;

    FOR SELECT
        B.CODIGO,
        B.NOMEFANTASIA,
        B.UF,
        B.REGIME_TRIBUTARIO,
        COALESCE(B.BASELEGAL_ID, 0)
    FROM TBUSUARIO_ESTABELECIMENTO A, TBESTABELECIMENTO B
    WHERE A.USUARIO_CODIGO = :CODIGO_1  AND
     A.ESTABELECIMENTO_CODIGO = B.CODIGO
     AND IIF(:PROCESSO_PRODUTIVO > 0, B.PRODUTIVO = 1, TRUE)
    INTO
       :CODIGO,
       :NOMEFANTASIA,
       :UF,
       :REGIME_TRIBUTARIO,
       :BASELEGAL_ID
    DO
    BEGIN
        CONTADOR = CONTADOR + 1;
    END

    IF(CONTADOR = 0)THEN
    BEGIN

        FOR SELECT  B.CODIGO, B.NOMEFANTASIA, B.UF, B.REGIME_TRIBUTARIO, COALESCE(B.BASELEGAL_ID, 0)
        FROM TBESTABELECIMENTO B
        WHERE B.STATUSEXCLUSAO = '1'
        AND IIF(:PROCESSO_PRODUTIVO > 0, B.PRODUTIVO = 1, TRUE)
        INTO
           :CODIGO,
           :NOMEFANTASIA,
           :UF,
           :REGIME_TRIBUTARIO,
           :BASELEGAL_ID
        DO SUSPEND;

    END ELSE
    BEGIN
        SUSPEND;
    END

END
^

SET TERM ; ^

