public ConsultaPd ComplementarDadosPd(Usuario user, string unidadeGestoraLiquidante = "", string gestaoLiquidante = "", string unidadeGestora = "", string NumeroPD = "", int agrupamento = 0, TIPO_CONSULTA_PD origem = TIPO_CONSULTA_PD.CONSULTAR, string dsNumOB = "")
        {
            if (origem == TIPO_CONSULTA_PD.ADICIONAR && ExecucaoPDExiste(NumeroPD, agrupamento))
            {
                throw new SidsException("A Execução da PD já existe em outro agrupamento.");
            }

            var dadosUsuarioSiafem = _siafem.ConsultarUsuarioHomologacaoProducao(user.CPF, user.Senha, true);

            USUARIO = dadosUsuarioSiafem.usuario;
            SENHA   = dadosUsuarioSiafem.senha;

            var data = new ConsultaPd();

            if (dsNumOB == "" || dsNumOB == null)
            {
                data = _siafem.ConsultaPD(USUARIO, Decrypt(SENHA), unidadeGestoraLiquidante, gestaoLiquidante, unidadeGestora, NumeroPD);
            }

            var dataSids = SelecionarDadosApoio(1, NumeroPD);

            if (dataSids != null)
            {
                data.NumeroAgrupamentoProgramacaoDesembolso = dataSids.NumeroAgrupamento;
                data.NumeroContrato                 = dataSids?.NumeroContrato;
                data.NumeroDocumentoGerador         = dataSids?.NumeroDocumentoGerador;
                data.IdTipoDocumento                = dataSids.DocumentoTipoId;
                data.NumeroDocumento                = dataSids?.NumeroDocumento;
                data.TransmissaoItemStatusSiafem    = dataSids?.StatusSiafem;
                data.TransmissaoItemMensagemSiafem  = dataSids?.MensagemServicoSiafem;
                data.TransmissaoItemStatusProdesp   = dataSids?.StatusConfirmacaoPagtoProdesp;
                data.TransmissaoItemMensagemProdesp = dataSids?.MensagemConfirmacaoPagtoProdesp;
                data.NumeroCnpjCpfPgto              = dataSids.NumeroCnpjcpfPagto;

                if (data.NumeroDocumentoGerador != null)
                {
                    var numeroOP = ConsultaOP(data.NumeroDocumentoGerador);
                    var partes   = numeroOP.Split(new string[] { "@" }, StringSplitOptions.None);
                    if (partes[0].Any())
                    {
                        data.NumOP = partes[0];
                    }
                    else
                    {
                        data.MensagemRetornoConsultaOP = partes[1];
                    }
                }
            }
            else
            {
                data.MensagemRetornoConsultaOP = "PD não existe na base SIDS";
            }

            return(data);
        }
        public ConsultaOB ComplementarDadosOb(Usuario user, string unidadeGestoraLiquidante, string gestaoLiquidante, string unidadeGestora, string numeroPD, int agrupamento, TIPO_CONSULTA_PD origem = TIPO_CONSULTA_PD.CONSULTAR)
        {
            if (origem == TIPO_CONSULTA_PD.ADICIONAR && AutorizacaoOBExiste(numeroPD, agrupamento))
            {
                throw new SidsException("A Autorizacao de OB já existe em outro agrupamento.");
            }

            var dadosUsuarioSiafem = _siafem.ConsultarUsuarioHomologacaoProducao(user.CPF, user.Senha, true);

            USUARIO = dadosUsuarioSiafem.usuario;
            SENHA   = dadosUsuarioSiafem.senha;

            ConsultaOB data = _siafem.ConsultaOB(USUARIO, Decrypt(SENHA), unidadeGestoraLiquidante, gestaoLiquidante, numeroPD);

            var dataSids = SelecionarDadosApoio(1, numeroPD);

            if (dataSids != null)
            {
                data.AgrupamentoItemOB              = dataSids.AgrupamentoItemOB ?? 0;
                data.NumeroContrato                 = dataSids?.NumeroContrato;
                data.NumeroDocumentoGerador         = dataSids?.NumeroDocumentoGerador;
                data.IdTipoDocumento                = dataSids.DocumentoTipoId;
                data.NumeroDocumento                = dataSids?.NumeroDocumento;
                data.TransmissaoItemStatusSiafem    = dataSids?.TransmissaoItemStatusSiafem;
                data.TransmissaoItemMensagemSiafem  = dataSids?.TransmissaoItemMensagemSiafem;
                data.TransmissaoItemStatusProdesp   = dataSids?.TransmissaoItemStatusProdesp;
                data.TransmissaoItemMensagemProdesp = dataSids?.TransmissaoItemStatusProdesp;
                data.CgcCpfUG = dataSids.Favorecido;

                if (data.NumeroDocumentoGerador != null)
                {
                    var numeroOP = ConsultaOP(data.NumeroDocumentoGerador);
                    var partes   = numeroOP.Split(new string[] { "@" }, StringSplitOptions.None);
                    if (partes[0].Any())
                    {
                        data.NumOP = partes[0];
                    }
                    else
                    {
                        data.MensagemRetornoConsultaOP = partes[1];
                    }
                }
            }
            else
            {
                data.MensagemRetornoConsultaOP = "OB não existe na base SIDS";
            }

            return(data);
        }