private RetornoBaseInferior ContruirBaseRetorno(Entidades.Relacionamento.Retorno.Retorno retorno)
 {
     RetornoBaseInferior baseInferior = new RetornoBaseInferior();
     baseInferior.Abrir(retorno);
     return baseInferior;
 }
        private void janela_EditarDocumento(JanelaRastro janela, RastroItem rastro)
        {
            if (rastro == null)
            {
                MessageBox.Show(
                    ParentForm,
                    "Por favor, antes de escolher editar documento, selecione o documento a ser editado.",
                    "Editar documento",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                UseWaitCursor = true;
                AguardeDB.Mostrar();
                Application.DoEvents();

                try
                {
                    Entidades.Relacionamento.RelacionamentoAcerto relacionamento = rastro.ObterRelacionamento();

                    if (relacionamento == null)
                    {
                        MessageBox.Show(
                            ParentForm,
                            "Não foi possível carregar o relacionamento do item selecionado.",
                            "Editar documento",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);

                        return;
                    }

                    switch (rastro.Tipo)
                    {
                        case RastroItem.TipoEnum.Venda:
                            BaseEditarVenda baseInferiorVenda = new BaseEditarVenda();
                            baseInferiorVenda.Abrir(relacionamento);
                            SubstituirBase(baseInferiorVenda);
                            break;

                        case RastroItem.TipoEnum.Saída:
                            SaídaBaseInferior baseInferiorSaída = new SaídaBaseInferior();
                            baseInferiorSaída.Abrir(relacionamento);
                            SubstituirBase(baseInferiorSaída);
                            break;
                        case RastroItem.TipoEnum.Retorno:
                            RetornoBaseInferior baseInferiorRetorno = new RetornoBaseInferior();
                            baseInferiorRetorno.Abrir(relacionamento);
                            SubstituirBase(baseInferiorRetorno);
                            break;
                        default:
                            throw new Exception("Tipo inexistente");
                    }
                }
                finally
                {
                    AguardeDB.Fechar();
                    UseWaitCursor = false;
                }
            }
        }