CREATE OR REPLACE PROCEDURE FCT_ATUALIZA_DOCUMENTO (
    P_CODIGO    IN VARCHAR2,
    P_TIPO      IN CHAR,
    P_DOCUMENTO IN NUMBER,
    P_NRORG     IN NUMBER,
    P_OPERADOR  IN NUMBER
)
AS
    V_NMARQUIVO    FCT_MODELODOC.NMARQUIVO%TYPE;
    V_DSCAMINHOARQ FCT_MODELODOC.DSCAMINHOARQ%TYPE;
    V_DSTIPO       FCT_MODELODOC.DSTIPO%TYPE;
    V_VRTAMANHO    FCT_MODELODOC.VRTAMANHO%TYPE;
BEGIN

    BEGIN
        SELECT NMARQUIVO,
               DSCAMINHOARQ,
               DSTIPO,
               VRTAMANHO
          INTO V_NMARQUIVO,
               V_DSCAMINHOARQ,
               V_DSTIPO,
               V_VRTAMANHO
          FROM FCT_MODELODOC
         WHERE NRSEQMODDOCFCT = P_DOCUMENTO
           AND NRORG          = P_NRORG;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            V_NMARQUIVO := NULL;
    END;

    IF (V_NMARQUIVO IS NOT NULL) THEN
        IF (P_TIPO = 'C') THEN
            UPDATE FCT_CONTRATODOC
               SET NMARQUIVO       = V_NMARQUIVO,
                   DSCAMINHOARQ    = V_DSCAMINHOARQ,
                   DSTIPO          = V_DSTIPO,
                   VRTAMANHO       = V_VRTAMANHO,
                   DTULTATU        = SYSDATE,
                   CDOPERULTATU    = P_OPERADOR,
                   NRORGULTATU     = P_NRORG
             WHERE INSTR(P_CODIGO, ('_' || TO_CHAR(NRSEQCONTDOC) || '_')) > 0
               AND NRORG        = P_NRORG;
        ELSE
            UPDATE FCT_ORCAMENTODOC
               SET NMARQUIVO       = V_NMARQUIVO,
                   DSCAMINHOARQ    = V_DSCAMINHOARQ,
                   DSTIPO          = V_DSTIPO,
                   VRTAMANHO       = V_VRTAMANHO,
                   DTULTATU        = SYSDATE,
                   CDOPERULTATU    = P_OPERADOR,
                   NRORGULTATU     = P_NRORG,
                   IDDOCALTERADO   = 'N'
             WHERE INSTR(P_CODIGO, '_' || TO_CHAR(NRSEQORCADOC) || '_') > 0
               AND NRORG = P_NRORG;
        END IF;
    END IF;
END;