CREATE OR REPLACE PACKAGE SUP_VALIDATIONS AS 

    K_FORN_N_CADASTRADO     CONSTANT VARCHAR2(30) := 'FORNECEDOR_NAO_CADASTRADO';
    K_FORN_MANY_INSCR       CONSTANT VARCHAR2(30) := 'INSCRICAO_CAD_MAIS_FORN';
    K_FORNECEDOR_INATIVO    CONSTANT VARCHAR2(30) := 'FORNECEDOR_INATIVO';
    K_FORN_NAO_QUALIFICADO  CONSTANT VARCHAR2(30) := 'FORNECEDOR_NAO_QUALIFICADO';
    K_REGIAO_N_CADASTRADA   CONSTANT VARCHAR2(30) := 'REGIAO_NAO_CADASTRADA';
    K_PRODUTO_INATIVO       CONSTANT VARCHAR2(30) := 'PRODUTO_INATIVO';
    K_PROD_NIVEL_INCOMPL    CONSTANT VARCHAR2(30) := 'PRODUTO_NIVEL_INCOMPLETO';
    K_UTL_PROD_COMPRA       CONSTANT VARCHAR2(30) := 'UTILIZA_SOMENTE_PROD_COMPRA';
    K_PRODUTO_N_CADASTRADO  CONSTANT VARCHAR2(30) := 'PRODUTO_NAO_CADASTRADO';
    K_MARCA_INATIVA         CONSTANT VARCHAR2(30) := 'MARCA_INATIVA';
    K_MARCA_NAO_CADASTRADA  CONSTANT VARCHAR2(30) := 'MARCA_NAO_CADASTRADA';
    K_FORN_N_ATENDE_REGIAO  CONSTANT VARCHAR2(30) := 'FORNECEDOR_NAO_ATENDE_REGIAO';
    K_QUAL_MARCA_PRODUTO    CONSTANT VARCHAR2(30) := 'QUALIFICACAO_MARCA_PRODUTO';
    K_PROD_NAO_QUALIF_FORN  CONSTANT VARCHAR2(30) := 'PROD_NAO_QUALIF_FORN';
    K_PRODUTO_FORNECEDOR    CONSTANT VARCHAR2(30) := 'PRODUTO_NAO_CADASTRADO_FORN';
    K_CENTRAL_N_PARAM       CONSTANT VARCHAR2(30) := 'CENTRAL_NAO_PARAMETRIZADA';
    K_PRODUTO_COMPRADOR     CONSTANT VARCHAR2(30) := 'PRODUTO_NAO_CADASTRADO_COMP';
    K_PRODUTO_MARCA         CONSTANT VARCHAR2(30) := 'PRODUTO_N_CADASTRADO_MARCA';

    K_N                     CONSTANT VARCHAR2(01) := 'N';
    K_S                     CONSTANT VARCHAR2(01) := 'S';
    K_I                     CONSTANT VARCHAR2(01) := 'I';
    K_D                     CONSTANT VARCHAR2(01) := 'D';
    K_M                     CONSTANT VARCHAR2(01) := 'M';
    K_0                     CONSTANT VARCHAR2(01) := '0';
    K_2                     CONSTANT VARCHAR2(01) := '2';

    PROCEDURE CHECK_FORNECEDOR(P_NRINSJURFORN IN FORNECEDOR.NRINSJURFORN%TYPE DEFAULT NULL,
                               P_CDFORNECED   IN FORNECEDOR.CDFORNECED%TYPE   DEFAULT NULL,
                               P_DTPEDIDO     IN DATE                         DEFAULT NULL,
                               P_PARASUPRI    IN PARASUPRI%ROWTYPE            DEFAULT NULL,
                               P_FORNECEDORES OUT FORNECEDOR%ROWTYPE,
                               P_MESSAGE      OUT VARCHAR2);

    PROCEDURE CHECK_REGIAO(P_CDREGIAO IN  VARCHAR2,
                           P_MESSAGE  OUT VARCHAR2, 
                           P_REGIOES  OUT REGIAO%ROWTYPE);

    PROCEDURE CHECK_PRODUTO_ATIVO(P_CDPRODUTO IN  VARCHAR2,
                                  P_MESSAGE   OUT VARCHAR2);

    PROCEDURE CHECK_PRODUTO(P_CDARVPROD IN  VARCHAR2,
                            P_PARASUPRI IN  PARASUPRI%ROWTYPE DEFAULT NULL,
                            P_MESSAGE   OUT VARCHAR2, 
                            P_PRODUTOS  OUT PRODUTO%ROWTYPE);

    PROCEDURE CHECK_MARCA(P_CDMARCA IN  VARCHAR2,
                          P_MESSAGE OUT VARCHAR2, 
                          P_MARCAS  OUT MARCA%ROWTYPE);
    FUNCTION CHECK_PRODUTO_FORNECEDOR(P_CDPRODUTO  IN PRODUTO.CDPRODUTO%TYPE,
                                      P_CDFORNECED IN FORNECEDOR.CDFORNECED%TYPE) RETURN VARCHAR2;

    FUNCTION CHECK_PRODUTO_COMPRADOR(P_CDPRODUTO  IN PRODUTO.CDPRODUTO%TYPE,
                                     P_CDOPERADOR IN OPERADOR.CDOPERADOR%TYPE) RETURN VARCHAR2;

    FUNCTION CHECK_PRODUTO_MARCA(P_CDPRODUTO IN PRODUTO.CDPRODUTO%TYPE,
                                 P_CDMARCA   IN MARCA.CDMARCA%TYPE) RETURN VARCHAR2;
    FUNCTION FORNECEDOR_ATENDE_REGIAO(P_CDFORNECED IN FORNECEDOR.CDFORNECED%TYPE,
                                      P_CDREGIAO   IN REGIAO.CDREGIAO%TYPE) RETURN VARCHAR2;  
    FUNCTION QUALIFICACAO_MARCA_PRODUTO(P_CDPRODUTO IN PRODUTO.CDPRODUTO%TYPE,
                                        P_CDMARCA   IN MARCA.CDMARCA%TYPE,
                                        P_DTPEDIDO  IN DATE,
                                        P_PARASUPRI IN PARASUPRI%ROWTYPE) RETURN VARCHAR2;
    FUNCTION QUALIFICACAO_PROD_FORN(P_CDPRODUTO  IN PRODUTO.CDPRODUTO%TYPE, 
                                    P_CDFORNECED IN FORNECEDOR.CDFORNECED%TYPE,
                                    P_DTPEDIDO   IN DATE,
                                    P_PARASUPRI  IN PARASUPRI%ROWTYPE) RETURN VARCHAR2;

    PROCEDURE CHECK_PARASUPRI(P_CDFILIAL   IN PARASUPRI.CDFILIAL%TYPE,
                              P_PARASUPRI OUT PARASUPRI%ROWTYPE,
                              P_ERROR     OUT VARCHAR2);                                   

END SUP_VALIDATIONS;
/