CREATE OR REPLACE PROCEDURE FCT_GERA_PROPOSTAS_FILHAS (
    P_NRSEQORCAMENTO IN INTEGER,
    P_CDOPERADOR     IN VARCHAR2,
    P_NRORG          IN INTEGER
)
AS
    V_QTDE_ESCOPOS          INTEGER;
    V_ORCAMENTO_ORIGEM      FCT_ORCAMENTO%ROWTYPE;
    V_NRSEQORCAMENTO        FCT_ORCAMENTO.NRSEQORCAMENTO%TYPE;
    V_NRORCAMENTO           FCT_ORCAMENTO.NRORCAMENTO%TYPE;
    V_NRSEQCONTRATO         FCT_CONTRATO.NRSEQCONTRATO%TYPE;
    V_NRRELACESCOPOPROPOSTA FCT_RELACESCOPOPROPOSTA.NRRELACESCOPOPROPOSTA%TYPE;
    V_NRTRABSERVORCA        FCT_TRABSERVORCAMENTO.NRTRABSERVORCA%TYPE;
    V_NRITEMORCAMENTO       FCT_ITEMORCAMENTO.NRITEMORCAMENTO%TYPE;
    V_NRITEMORCAMENTO_AD    FCT_ITEMORCAMENTO.NRITEMORCAMENTO%TYPE;
    V_NRVENDEDORORCA        FCT_VENDEDORORCA.NRVENDEDORORCA%TYPE;
    V_NRENDERECOORCA        FCT_ENDERECOORCA.NRENDERECOORCA%TYPE;
    V_NRSEQORCADOC          FCT_ORCAMENTODOC.NRSEQORCADOC%TYPE;
    V_NRCOMPSERVORCAMENTO   FCT_COMPSERVORCAMENTO.NRCOMPSERVORCAMENTO%TYPE;
    V_IDGERACONTRATO        FCT_TIPOORCAMENTO.IDGERACONTRATO%TYPE;
BEGIN
    SELECT COUNT(*)
      INTO V_QTDE_ESCOPOS
      FROM FCT_RELACESCOPOPROPOSTA
     WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
       AND NRORG          = P_NRORG;

    IF (V_QTDE_ESCOPOS > 1) THEN
        SELECT *
          INTO V_ORCAMENTO_ORIGEM
          FROM FCT_ORCAMENTO
         WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
           AND NRORG          = P_NRORG;
    
        FOR C_ESCOPOS IN (
            SELECT REL.NRTIPOORCAMENTO, REL.IDATIVO, REL.NRORG, TIPO.IDGERACONTRATO, REL.NRSEQMODDOCFCT, REL.CDFILIAL
              FROM FCT_RELACESCOPOPROPOSTA REL
             INNER JOIN FCT_TIPOORCAMENTO TIPO
                ON REL.NRTIPOORCAMENTO = TIPO.NRTIPOORCAMENTO
               AND REL.NRORG           = TIPO.NRORG
             WHERE REL.NRSEQORCAMENTO = P_NRSEQORCAMENTO
               AND REL.NRORG          = P_NRORG
        ) LOOP
    
            NOVO_CODIGO_NT('NRSEQORCAMENTO', V_NRSEQORCAMENTO, 1, P_NRORG);
    
            INSERT INTO FCT_ORCAMENTO (
                NRSEQORCAMENTO,         NRPARCNEGOCIO,        CDFILIAL,           NRORCAMENTO,
                NRVERSAOORCAMENTO,      CDFILICONTATO,        NRCONTATO,          NRTIPOORCAMENTO,
                NRPARCTRANSPORTADORA,   DTREFORCAMENTO,       CDPRECBASESERV,     CDREDUCONT,
                IDFATURAORCA,           CDMODPGTO,            NRPARCINTERLOCUTOR, NRGRUPOFATURA,
                DSREFERENCIAORCA,       IDTRANSPORTADORA,     QTDIASVALIDADE,     DTVALIDADE,
                QTDIASCONTRATO,         DTINICIOCONTRATO,     DTFIMCONTRATO,      NMPRINCIPALPARC,
                DSEMAIL,                NMPARCINTERLOCUTOR,   NRTELEFONE,         DSOBSERVACAOORCA,
                IDGERACONTRATO,         IDSITUACAOORCAMENTO,  VRORCAMENTO,        NRSEQORCAMENTOPAI,
                CDSEQORCAMENTO,         NRORG,                IDATIVO,            DTINCLUSAO,
                DTULTATU,               NRORGINCLUSAO,        CDOPERINCLUSAO,     NRORGULTATU,
                CDOPERULTATU,           DSINTERORCA,          NRORCAMENTOMODELO,  DTACEITEORCA,
                NRSEQCONTATO,           NRSEQOPORT,           IDORCAFILHO,        NRORCAMENTORELAC
            )
            VALUES (
                V_NRSEQORCAMENTO,
                V_ORCAMENTO_ORIGEM.NRPARCNEGOCIO,
                V_ORCAMENTO_ORIGEM.CDFILIAL,
                V_NRSEQORCAMENTO,--NRORCAMENTO
                V_ORCAMENTO_ORIGEM.NRVERSAOORCAMENTO,--1
                V_ORCAMENTO_ORIGEM.CDFILICONTATO,
                V_ORCAMENTO_ORIGEM.NRCONTATO,
                C_ESCOPOS.NRTIPOORCAMENTO,
                V_ORCAMENTO_ORIGEM.NRPARCTRANSPORTADORA,
                V_ORCAMENTO_ORIGEM.DTREFORCAMENTO,
                V_ORCAMENTO_ORIGEM.CDPRECBASESERV,
                V_ORCAMENTO_ORIGEM.CDREDUCONT,
                V_ORCAMENTO_ORIGEM.IDFATURAORCA,
                V_ORCAMENTO_ORIGEM.CDMODPGTO,
                V_ORCAMENTO_ORIGEM.NRPARCINTERLOCUTOR,
                V_ORCAMENTO_ORIGEM.NRGRUPOFATURA,
                V_ORCAMENTO_ORIGEM.DSREFERENCIAORCA,
                V_ORCAMENTO_ORIGEM.IDTRANSPORTADORA,
                V_ORCAMENTO_ORIGEM.QTDIASVALIDADE,
                V_ORCAMENTO_ORIGEM.DTVALIDADE,
                V_ORCAMENTO_ORIGEM.QTDIASCONTRATO,
                V_ORCAMENTO_ORIGEM.DTINICIOCONTRATO,
                V_ORCAMENTO_ORIGEM.DTFIMCONTRATO,
                V_ORCAMENTO_ORIGEM.NMPRINCIPALPARC,
                V_ORCAMENTO_ORIGEM.DSEMAIL,
                V_ORCAMENTO_ORIGEM.NMPARCINTERLOCUTOR,
                V_ORCAMENTO_ORIGEM.NRTELEFONE,
                V_ORCAMENTO_ORIGEM.DSOBSERVACAOORCA,
                V_ORCAMENTO_ORIGEM.IDGERACONTRATO,
                V_ORCAMENTO_ORIGEM.IDSITUACAOORCAMENTO, --'ACEITO',
                V_ORCAMENTO_ORIGEM.VRORCAMENTO,
                P_NRSEQORCAMENTO,--NRSEQORCAMENTOPAI,
                V_ORCAMENTO_ORIGEM.CDSEQORCAMENTO,--V_CDSEQORCAMENTO
                V_ORCAMENTO_ORIGEM.NRORG,
                V_ORCAMENTO_ORIGEM.IDATIVO,
                SYSDATE,
                NULL,
                P_NRORG,
                P_CDOPERADOR,
                NULL,
                NULL,
                V_ORCAMENTO_ORIGEM.DSINTERORCA,
                V_ORCAMENTO_ORIGEM.NRORCAMENTOMODELO,
                V_ORCAMENTO_ORIGEM.DTACEITEORCA,
                V_ORCAMENTO_ORIGEM.NRSEQCONTATO,
                V_ORCAMENTO_ORIGEM.NRSEQOPORT,
                V_ORCAMENTO_ORIGEM.IDORCAFILHO,
                V_ORCAMENTO_ORIGEM.NRORCAMENTORELAC
            );
    
            CRIA_MNEMONICO(P_NRORG, 'O', V_NRSEQORCAMENTO, V_NRORCAMENTO);
    
            NOVO_CODIGO_NT('FCT_RELACESCOPOPROPOSTA', V_NRRELACESCOPOPROPOSTA, 1, P_NRORG);
    
            INSERT INTO FCT_RELACESCOPOPROPOSTA (
                    NRRELACESCOPOPROPOSTA,  NRSEQORCAMENTO,  NRTIPOORCAMENTO,    NRORG,
                    DTINCLUSAO,             DTULTATU,        NRORGINCLUSAO,      CDOPERINCLUSAO,
                    NRORGULTATU,            CDOPERULTATU,    IDATIVO,            NRSEQMODDOCFCT,
                    CDFILIAL
            )
            VALUES (
                V_NRRELACESCOPOPROPOSTA, V_NRSEQORCAMENTO, C_ESCOPOS.NRTIPOORCAMENTO, C_ESCOPOS.NRORG,
                SYSDATE,                 NULL,             P_NRORG,                   P_CDOPERADOR,
                NULL,                    NULL,             C_ESCOPOS.IDATIVO,         C_ESCOPOS.NRSEQMODDOCFCT,
                C_ESCOPOS.CDFILIAL
            );
    
            FOR C_COMP IN (
                SELECT NRCOMPSERVICO, NMCOMPSERVICO, NRCOMPSERVICOPAI, IDCOMPOBRIGATORIA,
                       IDESCOLHIDO,   NRORG,         IDATIVO
                  FROM FCT_COMPSERVORCAMENTO
                 WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
                   AND NRORG          = P_NRORG
            ) LOOP
    
                NOVO_CODIGO_NT('FCT_COMPSERVORCAMENTO', V_NRCOMPSERVORCAMENTO, 1, P_NRORG);
    
                INSERT INTO FCT_COMPSERVORCAMENTO (
                    NRCOMPSERVORCAMENTO,    NRSEQORCAMENTO,     NRCOMPSERVICO,  NMCOMPSERVICO,
                    NRCOMPSERVICOPAI,       IDCOMPOBRIGATORIA,  IDESCOLHIDO,    NRORG,
                    IDATIVO,                DTINCLUSAO,         NRORGINCLUSAO,  CDOPERINCLUSAO
                )
                VALUES (
                    V_NRCOMPSERVORCAMENTO,      V_NRSEQORCAMENTO,          C_COMP.NRCOMPSERVICO,  C_COMP.NMCOMPSERVICO,
                    C_COMP.NRCOMPSERVICOPAI,    C_COMP.IDCOMPOBRIGATORIA,  C_COMP.IDESCOLHIDO,    P_NRORG,
                    C_COMP.IDATIVO,             SYSDATE,                   P_NRORG,               P_CDOPERADOR
                );
    
            END LOOP; --C_COMP
    
            FOR C_TRAB IN (
                SELECT NRSEQORCAMENTO,  NRCOMPSERVICO,  NRITCOMPSERVICO,  IDESCOLHIDO,
                       CDSERVORCA,      QTSERVORCA,     CDTPMEDIDASERV,   QTMEDSERVORCA,
                       VRUNITSERVORCA,  VRTOTSERVORCA,  IDELEMENTO,       IDTIPOELEMENTO,
                       IDELEMENTOPAI,   NRORG,          IDSERVOBRIGCOMP,  QTMEDIDAVARIAVEL
                  FROM FCT_TRABSERVORCAMENTO
                 WHERE NRSEQORCAMENTO  = P_NRSEQORCAMENTO
                   AND NRORG           = P_NRORG
                   AND NRTIPOORCAMENTO = C_ESCOPOS.NRTIPOORCAMENTO
            ) LOOP
    
                NOVO_CODIGO_NT('FCT_TRABSERVORCAMENTO', V_NRTRABSERVORCA, 1, P_NRORG);
    
                INSERT INTO FCT_TRABSERVORCAMENTO (
                    NRTRABSERVORCA,   NRSEQORCAMENTO,  NRTIPOORCAMENTO,  NRCOMPSERVICO,
                    NRITCOMPSERVICO,  IDESCOLHIDO,     CDSERVORCA,       QTSERVORCA,
                    CDTPMEDIDASERV,   QTMEDSERVORCA,   VRUNITSERVORCA,   VRTOTSERVORCA,
                    NRORG,            IDATIVO,         DTINCLUSAO,       DTULTATU,
                    NRORGINCLUSAO,    CDOPERINCLUSAO,  NRORGULTATU,      CDOPERULTATU,
                    IDELEMENTO,       IDTIPOELEMENTO,  IDELEMENTOPAI,    IDSERVOBRIGCOMP,
                    QTMEDIDAVARIAVEL
                )
                VALUES (
                    V_NRTRABSERVORCA,        V_NRSEQORCAMENTO,       C_ESCOPOS.NRTIPOORCAMENTO,  C_TRAB.NRCOMPSERVICO,
                    C_TRAB.NRITCOMPSERVICO,  C_TRAB.IDESCOLHIDO,     C_TRAB.CDSERVORCA,          C_TRAB.QTSERVORCA,
                    C_TRAB.CDTPMEDIDASERV,   C_TRAB.QTMEDSERVORCA,   C_TRAB.VRUNITSERVORCA,      C_TRAB.VRTOTSERVORCA,
                    P_NRORG,                 'S',                    SYSDATE,                    NULL,
                    P_NRORG,                 P_CDOPERADOR,           NULL,                       NULL,
                    C_TRAB.IDELEMENTO,       C_TRAB.IDTIPOELEMENTO,  C_TRAB.IDELEMENTOPAI,       C_TRAB.IDSERVOBRIGCOMP,
                    C_TRAB.QTMEDIDAVARIAVEL
                );
    
            END LOOP; --C_TRAB
    
            FOR C_ITENS IN (
                SELECT NRITEMORCAMENTO,      NRSEQORCAMENTO,       CDSERVORCA,             CDPRODUTO,
                       CDEMPRESA,            CDBEMATIVO,           SGUNIDADE,              SGUNIDADEADICIONAL,
                       CDPRECBASESERV,       NRITEMORCAMENTOPAI,   NRPARCTRANSPORTADORA,   NRPARCFORNECEDOR,
                       NRGRUPOFATURA,        NMITEMORCAMENTO,      NMREDUITEMORCA,         NMMNEMOITEMORCA,
                       DSQTITEMORCA,         QTITEMORCAMENTO,      DSQTITEMORCAADIC,       QTITEMORCAADIC,
                       CDTPMEDIDASERV,       QTMEDIDAORCA,         IDFATURAORCA,           CDMODPGTO,
                       VRUNITITEMORCA,       VRUNITITEMORCALOCA,   VRTOTALITEMORCA,        TXFORMULAITORCA,
                       IDTRANSPORTADORA,     QTDIASCONTRATO,       IDITEMOBRIGORCA,        IDSOMASUBITENS,
                       IDSOMANOITEMPAI,      IDSOMANOTOTALORCA,    DSAGRUPAITEMORCA,       IDIMPRESSAOORCA,
                       IDUNIDTEMPOLOCACAO,   IDPRECOLOCACAO,       QTTEMPOLOCACAO,         NRORG,
                       IDATIVO,              DTINICFATORC,         IDMULTMEDVRTOT,         IDBLOQALTORC,
                       IDADICITEMORC,        IDADICCOBRITEMORC,    VRITEMSEMDESC,          VRPERCDESCORCA,
                       IDTPDESCORCA,         NRTIPOHIERARQSERV,    NRTIPOORCAMENTO,        QTPARCELASFATU,
                       NRDIAVENCPARCELASFATU
                  FROM FCT_ITEMORCAMENTO
                 WHERE NRSEQORCAMENTO     = P_NRSEQORCAMENTO
                   AND NRORG              = P_NRORG
                   AND IDADICITEMORC      = 'N'
                   AND NRITEMORCAMENTOPAI IS NULL
                   AND NRTIPOORCAMENTO    = C_ESCOPOS.NRTIPOORCAMENTO
            ) LOOP
    
                NOVO_CODIGO_NT('NRITEMORCAMENTO', V_NRITEMORCAMENTO, 1, P_NRORG);
    
                INSERT INTO FCT_ITEMORCAMENTO (
                    NRITEMORCAMENTO,        NRSEQORCAMENTO,         CDSERVORCA,               CDPRODUTO,
                    CDEMPRESA,              CDBEMATIVO,             SGUNIDADE,                SGUNIDADEADICIONAL,
                    CDPRECBASESERV,         NRITEMORCAMENTOPAI,     NRPARCTRANSPORTADORA,     NRPARCFORNECEDOR,
                    NRGRUPOFATURA,          NMITEMORCAMENTO,        NMREDUITEMORCA,           NMMNEMOITEMORCA,
                    DSQTITEMORCA,           QTITEMORCAMENTO,        DSQTITEMORCAADIC,         QTITEMORCAADIC,
                    CDTPMEDIDASERV,         QTMEDIDAORCA,           IDFATURAORCA,             CDMODPGTO,
                    VRUNITITEMORCA,         VRUNITITEMORCALOCA,     VRTOTALITEMORCA,          TXFORMULAITORCA,
                    IDTRANSPORTADORA,       QTDIASCONTRATO,         IDITEMOBRIGORCA,          IDSOMASUBITENS,
                    IDSOMANOITEMPAI,        IDSOMANOTOTALORCA,      DSAGRUPAITEMORCA,         IDIMPRESSAOORCA,
                    IDUNIDTEMPOLOCACAO,     IDPRECOLOCACAO,         QTTEMPOLOCACAO,           NRORG,
                    IDATIVO,                DTINCLUSAO,             DTULTATU,                 NRORGINCLUSAO,
                    CDOPERINCLUSAO,         NRORGULTATU,            CDOPERULTATU,             DTINICFATORC,
                    IDMULTMEDVRTOT,         IDBLOQALTORC,           IDADICITEMORC,            IDADICCOBRITEMORC,
                    VRITEMSEMDESC,          VRPERCDESCORCA,         IDTPDESCORCA,             NRTIPOHIERARQSERV,
                    NRTIPOORCAMENTO,        QTPARCELASFATU,         NRDIAVENCPARCELASFATU
                )
                VALUES (
                    V_NRITEMORCAMENTO,
                    V_NRSEQORCAMENTO,
                    C_ITENS.CDSERVORCA,
                    C_ITENS.CDPRODUTO,
                    C_ITENS.CDEMPRESA,
                    C_ITENS.CDBEMATIVO,
                    C_ITENS.SGUNIDADE,
                    C_ITENS.SGUNIDADEADICIONAL,
                    C_ITENS.CDPRECBASESERV,
                    NULL,
                    C_ITENS.NRPARCTRANSPORTADORA,
                    C_ITENS.NRPARCFORNECEDOR,
                    C_ITENS.NRGRUPOFATURA,
                    C_ITENS.NMITEMORCAMENTO,
                    C_ITENS.NMREDUITEMORCA,
                    C_ITENS.NMMNEMOITEMORCA,
                    C_ITENS.DSQTITEMORCA,
                    C_ITENS.QTITEMORCAMENTO,
                    C_ITENS.DSQTITEMORCAADIC,
                    C_ITENS.QTITEMORCAADIC,
                    C_ITENS.CDTPMEDIDASERV,
                    C_ITENS.QTMEDIDAORCA,
                    C_ITENS.IDFATURAORCA,
                    C_ITENS.CDMODPGTO,
                    C_ITENS.VRUNITITEMORCA,
                    C_ITENS.VRUNITITEMORCALOCA,
                    C_ITENS.VRTOTALITEMORCA,
                    C_ITENS.TXFORMULAITORCA,
                    C_ITENS.IDTRANSPORTADORA,
                    C_ITENS.QTDIASCONTRATO,
                    C_ITENS.IDITEMOBRIGORCA,
                    C_ITENS.IDSOMASUBITENS,
                    C_ITENS.IDSOMANOITEMPAI,
                    C_ITENS.IDSOMANOTOTALORCA,
                    C_ITENS.DSAGRUPAITEMORCA,
                    C_ITENS.IDIMPRESSAOORCA,
                    C_ITENS.IDUNIDTEMPOLOCACAO,
                    C_ITENS.IDPRECOLOCACAO,
                    C_ITENS.QTTEMPOLOCACAO,
                    C_ITENS.NRORG,
                    C_ITENS.IDATIVO,
                    SYSDATE,
                    NULL,
                    P_NRORG,
                    P_CDOPERADOR,
                    NULL,
                    NULL,
                    C_ITENS.DTINICFATORC,
                    C_ITENS.IDMULTMEDVRTOT,
                    C_ITENS.IDBLOQALTORC,
                    C_ITENS.IDADICITEMORC,
                    C_ITENS.IDADICCOBRITEMORC,
                    C_ITENS.VRITEMSEMDESC,
                    C_ITENS.VRPERCDESCORCA,
                    C_ITENS.IDTPDESCORCA,
                    C_ITENS.NRTIPOHIERARQSERV,
                    C_ESCOPOS.NRTIPOORCAMENTO,
                    C_ITENS.QTPARCELASFATU,
                    C_ITENS.NRDIAVENCPARCELASFATU
                );
    
                FOR C_ADICIONAIS IN (
                    SELECT NRITEMORCAMENTO,     NRSEQORCAMENTO,        CDSERVORCA,        CDPRODUTO,
                           CDEMPRESA,           CDBEMATIVO,            SGUNIDADE,         SGUNIDADEADICIONAL,
                           CDPRECBASESERV,      NRPARCTRANSPORTADORA,  NRPARCFORNECEDOR,  NRGRUPOFATURA,
                           NMITEMORCAMENTO,     NMREDUITEMORCA,        NMMNEMOITEMORCA,   DSQTITEMORCA,
                           QTITEMORCAMENTO,     DSQTITEMORCAADIC,      QTITEMORCAADIC,    CDTPMEDIDASERV,
                           QTMEDIDAORCA,        IDFATURAORCA,          CDMODPGTO,         VRUNITITEMORCA,
                           VRUNITITEMORCALOCA,  VRTOTALITEMORCA,       TXFORMULAITORCA,   IDTRANSPORTADORA,
                           QTDIASCONTRATO,      IDITEMOBRIGORCA,       IDSOMASUBITENS,    IDSOMANOITEMPAI,
                           IDSOMANOTOTALORCA,   DSAGRUPAITEMORCA,      IDIMPRESSAOORCA,   IDUNIDTEMPOLOCACAO,
                           IDPRECOLOCACAO,      QTTEMPOLOCACAO,        NRORG,             IDATIVO,
                           DTINICFATORC,        IDMULTMEDVRTOT,        IDBLOQALTORC,      IDADICITEMORC,
                           IDADICCOBRITEMORC,   VRITEMSEMDESC,         VRPERCDESCORCA,    IDTPDESCORCA,
                           NRTIPOHIERARQSERV,   NRTIPOORCAMENTO,       QTPARCELASFATU,    NRDIAVENCPARCELASFATU
                      FROM FCT_ITEMORCAMENTO
                     WHERE NRSEQORCAMENTO     = P_NRSEQORCAMENTO
                       AND NRORG              = P_NRORG
                       AND IDADICITEMORC      = 'S'
                       AND NRITEMORCAMENTOPAI = C_ITENS.NRITEMORCAMENTO
                       AND NRTIPOORCAMENTO    = C_ESCOPOS.NRTIPOORCAMENTO
                ) LOOP
    
                    NOVO_CODIGO_NT('NRITEMORCAMENTO', V_NRITEMORCAMENTO_AD, 1, P_NRORG);
    
                    INSERT INTO FCT_ITEMORCAMENTO (
                        NRITEMORCAMENTO,       NRSEQORCAMENTO,         CDSERVORCA,             CDPRODUTO,
                        CDEMPRESA,             CDBEMATIVO,             SGUNIDADE,              SGUNIDADEADICIONAL,
                        CDPRECBASESERV,        NRITEMORCAMENTOPAI,     NRPARCTRANSPORTADORA,   NRPARCFORNECEDOR,
                        NRGRUPOFATURA,         NMITEMORCAMENTO,        NMREDUITEMORCA,         NMMNEMOITEMORCA,
                        DSQTITEMORCA,          QTITEMORCAMENTO,        DSQTITEMORCAADIC,       QTITEMORCAADIC,
                        CDTPMEDIDASERV,        QTMEDIDAORCA,           IDFATURAORCA,           CDMODPGTO,
                        VRUNITITEMORCA,        VRUNITITEMORCALOCA,     VRTOTALITEMORCA,        TXFORMULAITORCA,
                        IDTRANSPORTADORA,      QTDIASCONTRATO,         IDITEMOBRIGORCA,        IDSOMASUBITENS,
                        IDSOMANOITEMPAI,       IDSOMANOTOTALORCA,      DSAGRUPAITEMORCA,       IDIMPRESSAOORCA,
                        IDUNIDTEMPOLOCACAO,    IDPRECOLOCACAO,         QTTEMPOLOCACAO,         NRORG,
                        IDATIVO,               DTINCLUSAO,             DTULTATU,               NRORGINCLUSAO,
                        CDOPERINCLUSAO,        NRORGULTATU,            CDOPERULTATU,           DTINICFATORC,
                        IDMULTMEDVRTOT,        IDBLOQALTORC,           IDADICITEMORC,          IDADICCOBRITEMORC,
                        VRITEMSEMDESC,         VRPERCDESCORCA,         IDTPDESCORCA,           NRTIPOHIERARQSERV,
                        NRTIPOORCAMENTO,       QTPARCELASFATU,         NRDIAVENCPARCELASFATU
                    )
                    VALUES (
                        V_NRITEMORCAMENTO_AD,
                        V_NRSEQORCAMENTO,
                        C_ADICIONAIS.CDSERVORCA,
                        C_ADICIONAIS.CDPRODUTO,
                        C_ADICIONAIS.CDEMPRESA,
                        C_ADICIONAIS.CDBEMATIVO,
                        C_ADICIONAIS.SGUNIDADE,
                        C_ADICIONAIS.SGUNIDADEADICIONAL,
                        C_ADICIONAIS.CDPRECBASESERV,
                        V_NRITEMORCAMENTO,
                        C_ADICIONAIS.NRPARCTRANSPORTADORA,
                        C_ADICIONAIS.NRPARCFORNECEDOR,
                        C_ADICIONAIS.NRGRUPOFATURA,
                        C_ADICIONAIS.NMITEMORCAMENTO,
                        C_ADICIONAIS.NMREDUITEMORCA,
                        C_ADICIONAIS.NMMNEMOITEMORCA,
                        C_ADICIONAIS.DSQTITEMORCA,
                        C_ADICIONAIS.QTITEMORCAMENTO,
                        C_ADICIONAIS.DSQTITEMORCAADIC,
                        C_ADICIONAIS.QTITEMORCAADIC,
                        C_ADICIONAIS.CDTPMEDIDASERV,
                        C_ADICIONAIS.QTMEDIDAORCA,
                        C_ADICIONAIS.IDFATURAORCA,
                        C_ADICIONAIS.CDMODPGTO,
                        C_ADICIONAIS.VRUNITITEMORCA,
                        C_ADICIONAIS.VRUNITITEMORCALOCA,
                        C_ADICIONAIS.VRTOTALITEMORCA,
                        C_ADICIONAIS.TXFORMULAITORCA,
                        C_ADICIONAIS.IDTRANSPORTADORA,
                        C_ADICIONAIS.QTDIASCONTRATO,
                        C_ADICIONAIS.IDITEMOBRIGORCA,
                        C_ADICIONAIS.IDSOMASUBITENS,
                        C_ADICIONAIS.IDSOMANOITEMPAI,
                        C_ADICIONAIS.IDSOMANOTOTALORCA,
                        C_ADICIONAIS.DSAGRUPAITEMORCA,
                        C_ADICIONAIS.IDIMPRESSAOORCA,
                        C_ADICIONAIS.IDUNIDTEMPOLOCACAO,
                        C_ADICIONAIS.IDPRECOLOCACAO,
                        C_ADICIONAIS.QTTEMPOLOCACAO,
                        C_ADICIONAIS.NRORG,
                        C_ADICIONAIS.IDATIVO,
                        SYSDATE,
                        NULL,
                        P_NRORG,
                        P_CDOPERADOR,
                        NULL,
                        NULL,
                        C_ADICIONAIS.DTINICFATORC,
                        C_ADICIONAIS.IDMULTMEDVRTOT,
                        C_ADICIONAIS.IDBLOQALTORC,
                        C_ADICIONAIS.IDADICITEMORC,
                        C_ADICIONAIS.IDADICCOBRITEMORC,
                        C_ADICIONAIS.VRITEMSEMDESC,
                        C_ADICIONAIS.VRPERCDESCORCA,
                        C_ADICIONAIS.IDTPDESCORCA,
                        C_ADICIONAIS.NRTIPOHIERARQSERV,
                        C_ESCOPOS.NRTIPOORCAMENTO,
                        C_ADICIONAIS.QTPARCELASFATU,
                        C_ADICIONAIS.NRDIAVENCPARCELASFATU
                    );
    
                END LOOP; --C_ADICIONAIS
    
            END LOOP; --C_ITENS
    
            -- ATUALIZA O VALOR TOTAL DA PROPOSTA COM A SOMA DE SEUS ITENS
            UPDATE FCT_ORCAMENTO
               SET VRORCAMENTO = (SELECT SUM(VRTOTALITEMORCA)
                                    FROM FCT_ITEMORCAMENTO
                                   WHERE NRSEQORCAMENTO = V_NRSEQORCAMENTO
                                     AND NRORG          = P_NRORG)
             WHERE NRSEQORCAMENTO = V_NRSEQORCAMENTO
               AND NRORG          = P_NRORG;
    
            FOR C_VENDEDOR IN (
                SELECT NRPARCVENDEDOR,  NRPARCGERENTE,  VRPEPARTICIPAVENDA,
                       IDVENPRIORCA,    NRORG,          IDATIVO
                  FROM FCT_VENDEDORORCA
                 WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
                   AND NRORG          = P_NRORG
            ) LOOP
    
                NOVO_CODIGO_NT('NRVENDEDORORCA', V_NRVENDEDORORCA, 1, P_NRORG);
    
                INSERT INTO FCT_VENDEDORORCA (
                    NRVENDEDORORCA,         NRSEQORCAMENTO,   NRPARCVENDEDOR,     NRPARCGERENTE,
                    VRPEPARTICIPAVENDA,     IDVENPRIORCA,     NRORG,              IDATIVO,
                    DTINCLUSAO,             DTULTATU,         NRORGINCLUSAO,      CDOPERINCLUSAO,
                    NRORGULTATU,            CDOPERULTATU
                )
                VALUES (
                    V_NRVENDEDORORCA,              V_NRSEQORCAMENTO,        C_VENDEDOR.NRPARCVENDEDOR, C_VENDEDOR.NRPARCGERENTE,
                    C_VENDEDOR.VRPEPARTICIPAVENDA, C_VENDEDOR.IDVENPRIORCA, C_VENDEDOR.NRORG,          C_VENDEDOR.IDATIVO,
                    SYSDATE,                       NULL,                    P_NRORG,                   P_CDOPERADOR,
                    NULL,                          NULL
                );
    
            END LOOP; --C_VENDEDOR
    
            FOR C_ENDERECO IN (
                SELECT NRENDERECOORCA,  NRSEQORCAMENTO,    CDTIPOENDERECO,    CDPAIS,
                       SGESTADO,        CDMUNICIPIO,       CDBAIRRO,          CDLOGRADOURO,
                       DSENDERECO,      NRIMOVELENDERECO,  NMBAIRROENDERECO,  DSCOMPLEENDERECO,
                       NRCEPENDERECO,   DSREFERENCIAENDE,  NRORG,             IDATIVO
                  FROM FCT_ENDERECOORCA
                 WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
                   AND NRORG          = P_NRORG
            ) LOOP
    
                NOVO_CODIGO_NT('NRENDERECOORCA', V_NRENDERECOORCA, 1, P_NRORG);
    
                INSERT INTO FCT_ENDERECOORCA (
                    NRENDERECOORCA,     NRSEQORCAMENTO,         CDTIPOENDERECO,         CDPAIS,
                    SGESTADO,           CDMUNICIPIO,            CDBAIRRO,               CDLOGRADOURO,
                    DSENDERECO,         NRIMOVELENDERECO,       NMBAIRROENDERECO,       DSCOMPLEENDERECO,
                    NRCEPENDERECO,      DSREFERENCIAENDE,       NRORG,                  IDATIVO,
                    DTINCLUSAO,         DTULTATU,               NRORGINCLUSAO,          CDOPERINCLUSAO,
                    NRORGULTATU,        CDOPERULTATU
                )
                VALUES (
                    V_NRENDERECOORCA,          V_NRSEQORCAMENTO,             C_ENDERECO.CDTIPOENDERECO,    C_ENDERECO.CDPAIS,
                    C_ENDERECO.SGESTADO,       C_ENDERECO.CDMUNICIPIO,       C_ENDERECO.CDBAIRRO,          C_ENDERECO.CDLOGRADOURO,
                    C_ENDERECO.DSENDERECO,     C_ENDERECO.NRIMOVELENDERECO,  C_ENDERECO.NMBAIRROENDERECO,  C_ENDERECO.DSCOMPLEENDERECO,
                    C_ENDERECO.NRCEPENDERECO,  C_ENDERECO.DSREFERENCIAENDE,  C_ENDERECO.NRORG,             C_ENDERECO.IDATIVO,
                    SYSDATE,                   NULL,                         P_NRORG,                      P_CDOPERADOR,
                    NULL,                      NULL
                );
    
            END LOOP; --C_ENDERECO
    
            FOR C_DOCUMENTO IN (
                SELECT NRSEQORCADOC,     NRSEQORCAMENTO,   NRSEQMODDOCFCT,  IDIDIOMA,
                       TXMODELOORCADOC,  IDPADRAOORCADOC,  NRORG,           IDATIVO,
                       NMARQUIVO,        DSCAMINHOARQ,     DSTIPO,          VRTAMANHO
                  FROM FCT_ORCAMENTODOC
                 WHERE NRSEQORCAMENTO = P_NRSEQORCAMENTO
                   AND NRORG          = P_NRORG
            ) LOOP
    
                NOVO_CODIGO_NT('NRSEQORCADOC', V_NRSEQORCADOC, 1, P_NRORG);
    
                INSERT INTO FCT_ORCAMENTODOC (
                    NRSEQORCADOC,       NRSEQORCAMENTO,     NRSEQMODDOCFCT,  IDIDIOMA,
                    TXMODELOORCADOC,    IDPADRAOORCADOC,    NRORG,           IDATIVO,
                    DTINCLUSAO,         DTULTATU,           NRORGINCLUSAO,   CDOPERINCLUSAO,
                    NRORGULTATU,        CDOPERULTATU,       NMARQUIVO,       DSCAMINHOARQ,
                    DSTIPO,             VRTAMANHO
                )
                VALUES (
                    V_NRSEQORCADOC,               V_NRSEQORCAMENTO,              C_DOCUMENTO.NRSEQMODDOCFCT,    C_DOCUMENTO.IDIDIOMA,
                    C_DOCUMENTO.TXMODELOORCADOC,  C_DOCUMENTO.IDPADRAOORCADOC,   C_DOCUMENTO.NRORG,             C_DOCUMENTO.IDATIVO,
                    SYSDATE,                      NULL,                          P_NRORG,                       P_CDOPERADOR,
                    NULL,                         NULL,                          C_DOCUMENTO.NMARQUIVO,         C_DOCUMENTO.DSCAMINHOARQ,
                    C_DOCUMENTO.DSTIPO,           C_DOCUMENTO.VRTAMANHO
                );
    
            END LOOP; --C_DOCUMENTO
    
            IF (C_ESCOPOS.IDGERACONTRATO = 'S') THEN
                GERA_CONTRATO(P_NRORG, V_NRSEQORCAMENTO, V_NRSEQCONTRATO);
            END IF;
    
        END LOOP; --C_ESCOPOS
    
    ELSIF (V_QTDE_ESCOPOS = 1) THEN

        SELECT TIPO.IDGERACONTRATO
          INTO V_IDGERACONTRATO
          FROM FCT_RELACESCOPOPROPOSTA REL
         INNER JOIN FCT_TIPOORCAMENTO TIPO
            ON REL.NRTIPOORCAMENTO = TIPO.NRTIPOORCAMENTO
           AND REL.NRORG           = TIPO.NRORG
         WHERE REL.NRSEQORCAMENTO = P_NRSEQORCAMENTO
           AND REL.NRORG          = P_NRORG;

        IF (V_IDGERACONTRATO = 'S') THEN
            GERA_CONTRATO(P_NRORG, P_NRSEQORCAMENTO, V_NRSEQCONTRATO);
        END IF;

    END IF; --V_QTDE_ESCOPOS > 1
    
    COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('FCT_GERA_PROPOSTAS_FILHAS','6.19.xxx'); END;
/