예제 #1
0
        public void GivenAsSeguintesSolicitacoesDeOrcamento(Table table)
        {
            string responsavel     = table.Header.ToList()[0];
            string situacao        = table.Header.ToList()[1];
            string tipoSolicitacao = table.Header.ToList()[2];
            string prioridade      = table.Header.ToList()[3];
            string titulo          = table.Header.ToList()[4];
            string prazo           = table.Header.ToList()[5];
            string cliente         = table.Header.ToList()[6];

            foreach (TableRow row in table.Rows)
            {
                string responsavelRow     = row[responsavel];
                string situacaoRow        = row[situacao];
                string tipoSolicitacaoRow = row[tipoSolicitacao];
                string prioridadeRow      = row[prioridade];
                string tituloRow          = row[titulo];
                string prazoRow           = row[prazo];
                string clienteRow         = row[cliente];

                SolicitacaoOrcamento seot = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest,
                                                                                                  StepColaborador.ColaboradoresDic[responsavelRow],
                                                                                                  StepConfiguracaoDocumentoSituacao.ConfiguracaoDocumentoSituacoesDic[situacaoRow],
                                                                                                  CsPrioridade.Alta, tituloRow, DateTime.Parse(prazoRow),
                                                                                                  StepEmpresaInsituicao.EmpresaInstituicaoDict[clienteRow],
                                                                                                  StepTipoSolicitacaoOrcamento.situacaoTS[tipoSolicitacaoRow], false);

                // Set da prioridade
                PropertyInfo info = typeof(SolicitacaoOrcamento).GetProperty("CsPrioridade");
                info.SetValue(seot, EnumUtil.ValueEnum(typeof(CsPrioridade), prioridadeRow), null);

                seot.Save();
                seotsDic.Add(seot.TxCodigo, seot);
            }
        }
예제 #2
0
        public void EntaoApenasASituacaoSituacao1DeveSerOpcaoNoFiltroDeSituacaoEOsColaboradoresColaborador1Colaborador2Colaborador3DevemSerOpcoesNoFiltroDeResponsavel(string situacao1, string colaborador1, string colaborador2, string colaborador3, string colaboradorX)
        {
            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1));

            User usuario2 = colaboradorDic[String.Format("'{0}'", colaborador2)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario2));

            User usuario3 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario3));

            User usuario4 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario4));

            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1));

            User usuarioX = colaboradorDic[colaboradorX].Usuario;

            Assert.IsFalse(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuarioX));
        }
예제 #3
0
        public void EntaoApenasAsSituacoesSituacao1Situacao2Situacao3DevemSerOpcoesNoFiltroDeSituacaoEApenasOColaboradorColaborador1DeveSerOpcaoNoFiltroDeResponsavel(string situacao1, string situacao2, string situacao3, string colaborador1, string situacaoX)
        {
            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1));

            ConfiguracaoDocumentoSituacao situacaoObj2 = situacaoDic[String.Format("'{0}'", situacao2)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj2));

            ConfiguracaoDocumentoSituacao situacaoObj3 = situacaoDic[String.Format("'{0}'", situacao3)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj3));

            ConfiguracaoDocumentoSituacao situacaoObj4 = situacaoDic[String.Format("'{0}'", situacao3)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj4));

            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1));

            ConfiguracaoDocumentoSituacao situacaoObjX = situacaoDic[situacaoX];

            Assert.IsFalse(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObjX));
        }
예제 #4
0
        /// <summary>
        /// Limpeza do comentário da SEOT
        /// </summary>
        private void LimparComentarioSolicitacaoOrcamento()
        {
            SolicitacaoOrcamento seot = (View.CurrentObject as SolicitacaoOrcamento);

            if (!seot.Oid.Equals(new Guid()))
            {
                seot.TxUltimoComentario = string.Empty;
            }
        }
예제 #5
0
        public void QuandoForCriadoUmaNovaSolicitacaoDeOrcamentoSeot01(string seotCriado, string codigo)
        {
            SolicitacaoOrcamento seot = new SolicitacaoOrcamento(SessionTest);

            seot.TxTitulo = seotCriado;
            seot.TxCodigo = codigo;
            seot.Save();

            seotsDic[codigo] = seot;
        }
        public void SolicitacaoComentarioOrcamentlo()
        {
            //Criar uma solicitação de orçamento com a situação "Em revisão técnica"
            //Inicio
            //Passo 1
            DateTime dtPrazo      = DateTime.Now;
            string   data         = dtPrazo.ToString("dd/MM/yyyy");
            string   emailCliente = "*****@*****.**";
            // Colaborador
            Colaborador colaborador = ColaboradorFactory.CriarColaborador(SessionTest, "000", DateTime.Now,
                                                                          "*****@*****.**", "Solicitacao", "Orcamento", "Historico", "nome.completo");
            // Situações
            ConfiguracaoDocumentoSituacao situacaoEmrevisaoTecnica = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Em Revisão Técnica", "black", CsColorDomain.System, true);

            EmpresaInstituicao cliente = EmpresaInstituicaoFactory.Criar(SessionTest, "Novo Cliente", "FPF",
                                                                         emailCliente, "0000-0000", true);
            //histórico da solicitação de orçamento
            //Solicitação de orçamento
            SolicitacaoOrcamento solicitacao = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
                                                                                                     situacaoEmrevisaoTecnica, CsPrioridade.Alta, "TesteEditarSalvarSolicitação", dtPrazo, cliente);

            solicitacao.Save();

            //Inicio
            //Testar editar e salvar uma solicitação de orçamento sem alterar a situação
            //CT_9.01.02 - Testar editar e salvar uma solicitação de orçamento sem alterar a situação
            //Inicio
            //Alterar nome do cliente
            solicitacao.Reload();
            solicitacao.Cliente.TxNome = "Nome do cliente alterado";
            solicitacao.Save();

            Assert.AreEqual("Em Revisão Técnica", solicitacao.SolicitacaoOrcamentoHistoricos[0].Situacoes.TxDescricao,
                            "A situação em revisão técnica deveria aparecer no histórico");

            ConfiguracaoDocumentoSituacao situacaoEntregue = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Entregue", "blue", CsColorDomain.System, true);

            solicitacao.Reload();
            solicitacao.Situacao = situacaoEntregue;
            solicitacao.Save();

            Assert.AreEqual("Entregue", solicitacao.SolicitacaoOrcamentoHistoricos[0].Situacoes.TxDescricao,
                            "A situação Entregue deveria aparecer no histórico");

            Assert.IsFalse(string.IsNullOrEmpty(solicitacao.SolicitacaoOrcamentoHistoricos[0].Comentario),
                           "O comentário deveria aparecer no histórico");
        }
예제 #7
0
        public void DadoASSEOTSComOsSeguintesValorEs(Table table)
        {
            int cont    = 0;
            int contRow = 0;

            foreach (var row in table.Rows)
            {
                ConfiguracaoDocumentoSituacao situacao = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(SessionTest, "Descricao", "Red", CsColorDomain.Custom, false);

                Colaborador colab = ColaboradorFactory.CriarColaborador(SessionTest, "", DateTime.Now, "", "", "", "", "", null, false);

                SolicitacaoOrcamento seot = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colab, situacao, CsPrioridade.Media, "Titulo",
                                                                                                  DateTime.Now, StepEmpresaInsituicao.EmpresaInstituicaoDict["Empresa01"], true);

                cont = 0;

                foreach (var item in table.Rows[contRow].Values)
                {
                    if (cont == 0)
                    {
                        seot.TxTitulo = item.ToString();
                    }
                    if (cont == 1)
                    {
                        colab.Usuario.FirstName         = item.ToString();
                        seot.Responsavel                = colab;
                        colaboradorDic[item.ToString()] = seot.Responsavel;
                    }
                    if (cont == 2)
                    {
                        situacao.TxDescricao         = item.ToString();
                        seot.Situacao                = situacao;
                        situacaoDic[item.ToString()] = situacao;
                    }
                    if (cont == 5)
                    {
                        seot.TipoSolicitacao = StepTipoSolicitacaoOrcamento.situacaoTS[item];
                    }


                    cont++;
                    seotsDic[seot.TxCodigo] = seot;
                    seotsDic[seot.TxCodigo].Save();
                }
                contRow++;
            }
        }
예제 #8
0
        public void EntaoApenasAsSituacoesSituacao1Situacao2Situacao3DevemSerOpcoesNoFiltroDeSituacao(string situacao1, string situacao2, string situacao3)
        {
            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1));

            ConfiguracaoDocumentoSituacao situacaoObj2 = situacaoDic[String.Format("'{0}'", situacao2)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj2));

            ConfiguracaoDocumentoSituacao situacaoObj3 = situacaoDic[String.Format("'{0}'", situacao3)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj3));

            ConfiguracaoDocumentoSituacao situacaoObj4 = situacaoDic[String.Format("'{0}'", situacao3)];

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj4));
        }
예제 #9
0
        public void EntaoApenasOSColaboradorEsColaborador1Colaborador2Colaborador3DevemSerOpcoesNoFiltroDeResponsavel(string colaborador1, string colaborador2, string colaborador3)
        {
            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1));

            User usuario2 = colaboradorDic[String.Format("'{0}'", colaborador2)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario2));

            User usuario3 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario3));

            User usuario4 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            Assert.IsTrue(SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario4));
        }
예제 #10
0
        public void QuandoVerificarAsOpcoesDoFiltroDeSituacao(string situacao1, string situacao2, string situacao3)
        {
            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1);

            ConfiguracaoDocumentoSituacao situacaoObj2 = situacaoDic[String.Format("'{0}'", situacao2)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj2);

            ConfiguracaoDocumentoSituacao situacaoObj3 = situacaoDic[String.Format("'{0}'", situacao3)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj3);

            ConfiguracaoDocumentoSituacao situacaoObj4 = situacaoDic[String.Format("'{0}'", situacao3)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj4);
        }
예제 #11
0
        public void QuandoVerificarAsOpcoesDoFiltroDeResponsavel(string colaborador1, string colaborador2, string colaborador3)
        {
            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1);

            User usuario2 = colaboradorDic[String.Format("'{0}'", colaborador2)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario2);

            User usuario3 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario3);

            User usuario4 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario4);
        }
예제 #12
0
        public Orcamento AdicionarOrcamentoCompleto(Orcamento orcamento, List <Solicitacao> solicitacoes)
        {
            var orcamentoNovo = this.Adicionar(orcamento);

            if (orcamentoNovo != null)
            {
                foreach (var item in solicitacoes)
                {
                    var solicitacaoOrcamento = new SolicitacaoOrcamento();
                    solicitacaoOrcamento.Orcamento   = orcamentoNovo;
                    solicitacaoOrcamento.Solicitacao = item;
                    _context.SolicitacaoOrcamento.Add(solicitacaoOrcamento);
                }
            }


            return(orcamentoNovo);
        }
        public void TestarSEOTUsuario()
        {
            //Criar uma solicitação de orçamento com a situação "Em revisão técnica"
            //Inicio
            //Passo 1
            DateTime dtPrazo      = DateTime.Now;
            string   data         = dtPrazo.ToString("dd/MM/yyyy");
            string   emailCliente = "*****@*****.**";
            // Colaborador
            // Criando objetos de usuários que acessarão os cronnogramas

            Colaborador colaborador = ColaboradorFactory.CriarColaborador(SessionTest, "000", DateTime.Now,
                                                                          "*****@*****.**", "Solicitacao", "Orcamento", "Historico", "nome.completo");

            User usuario01 = ColaboradorFactory.CriarUsuario(SessionTest, "nome.completo", "Nome", "Completo",
                                                             "*****@*****.**", true);

            // Situações
            ConfiguracaoDocumentoSituacao situacaoEmrevisaoTecnica = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Em Revisão Técnica", "black", CsColorDomain.System, true);

            EmpresaInstituicao cliente = EmpresaInstituicaoFactory.Criar(SessionTest, "Novo Cliente", "FPF",
                                                                         emailCliente, "0000-0000", true);
            //histórico da solicitação de orçamento
            //Solicitação de orçamento
            SolicitacaoOrcamento solicitacao = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
                                                                                                     situacaoEmrevisaoTecnica, CsPrioridade.Alta, "TesteEditarSalvarSolicitação", dtPrazo, cliente);

            solicitacao.Save();
            solicitacao.Reload();

            solicitacao.Cliente.TxNome = "Nome do cliente alterado";
            solicitacao.Save();

            UsuarioDAO.CurrentUser = colaborador.Usuario;

            Colaborador.RnSalvarUsuarioUltimaSEOT(SessionTest, UsuarioDAO.CurrentUser.Oid, colaborador);

            solicitacao.Save();

            Assert.AreEqual(UsuarioDAO.CurrentUser.Oid, colaborador.ColaboradorUltimoFiltro.LastUsuarioFilterSeot, "O colaborador selecionado é igual a sua última seleção");
        }
예제 #14
0
        public void QuandoVerificarAsOpcoesDoFiltroDeResponsavelEColaborador1ESituacaoSaoSituacao1Situacao2Situacao3(string colaborador1, string situacao1, string situacao2, string situacao3)
        {
            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1);

            ConfiguracaoDocumentoSituacao situacaoObj2 = situacaoDic[String.Format("'{0}'", situacao2)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj2);

            ConfiguracaoDocumentoSituacao situacaoObj3 = situacaoDic[String.Format("'{0}'", situacao3)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj3);

            ConfiguracaoDocumentoSituacao situacaoObj4 = situacaoDic[String.Format("'{0}'", situacao3)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj4);

            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1);
        }
예제 #15
0
        public void QuandoVerificarSeAsOpcoesDoFiltroDeResponsavelSaoColaborador1Colaborador2Colaborador3ESituacaoESituacao1(string colaborador1, string colaborador2, string colaborador3, string situacao1)
        {
            User usuario1 = colaboradorDic[String.Format("'{0}'", colaborador1)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario1);

            User usuario2 = colaboradorDic[String.Format("'{0}'", colaborador2)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario2);

            User usuario3 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario3);

            User usuario4 = colaboradorDic[String.Format("'{0}'", colaborador3)].Usuario;

            SolicitacaoOrcamento.RnSeotsPorResponsavel(SessionTest, usuario4);

            ConfiguracaoDocumentoSituacao situacaoObj1 = situacaoDic[String.Format("'{0}'", situacao1)];

            SolicitacaoOrcamento.RnSeotsPorSituacao(SessionTest, situacaoObj1);
        }
예제 #16
0
        /// <summary>
        /// Cria um objeto de SolicitacaoOrcamento
        /// </summary>
        /// <param name="session">Sessão</param>
        /// <param name="responsavel">Responsável pela Solicitação</param>
        /// <param name="situacao">Situação da Solicitação</param>
        /// <param name="prioridade">Prioridade da Solicitação</param>
        /// <param name="titulo">Título da Solicitação</param>
        /// <param name="prazo">Prazo da Solicitação</param>
        /// <param name="cliente">nome do cliente</param>
        /// <param name="save">Indica se é para salvar ou não</param>
        /// <returns>Objeto de SolicitacaoOrcamento</returns>
        public static SolicitacaoOrcamento CriarSolicitacaoOrcamento(Session session, Colaborador responsavel, ConfiguracaoDocumentoSituacao situacao, CsPrioridade prioridade, string titulo, DateTime prazo, EmpresaInstituicao cliente, bool save = false)
        {
            SolicitacaoOrcamento solicitacao = new SolicitacaoOrcamento(session);

            solicitacao.Cliente      = cliente;
            solicitacao.Responsavel  = responsavel;
            solicitacao.Situacao     = situacao;
            solicitacao.CsPrioridade = prioridade;
            solicitacao.TxTitulo     = titulo;
            solicitacao.DtPrazo      = prazo;

            if (cliente != null)
            {
                solicitacao.Cliente = cliente;
            }

            if (save)
            {
                solicitacao.Save();
            }

            return(solicitacao);
        }
예제 #17
0
        /// <summary>
        /// Popula os comboboxes de usuários e situações
        /// </summary>
        private void PopulateActionUsuario()
        {
            Session session = ((ObjectSpace)View.ObjectSpace).Session;

            this.singleChoiceActionUsuarios.Items.Clear();

            this.singleChoiceActionUsuarios.Items.Add(new ChoiceActionItem("Todos", 0));
            var         selec         = 0;
            var         selecSituacao = 0;
            Colaborador colab         = Colaborador.GetColaboradorCurrent(session);

            using (XPCollection <User> collection = new XPCollection <User>(((ObjectSpace)(View.ObjectSpace)).Session))
            {
                collection.Sorting.Add(new SortProperty("FullName", SortingDirection.Ascending));

                foreach (User usuario in collection)
                {
                    if (SolicitacaoOrcamento.RnSeotsPorResponsavel((((ObjectSpace)(View.ObjectSpace)).Session), usuario))
                    {
                        this.singleChoiceActionUsuarios.Items.Add(new ChoiceActionItem(usuario.FullName, usuario.Oid));
                        if (usuario.Oid.Equals(colab.ColaboradorUltimoFiltro.LastUsuarioFilterSeot))
                        {
                            selec = this.singleChoiceActionUsuarios.Items.Count - 1;
                        }
                    }
                }
            }

            this.singleChoiceActionSituacao.Items.Clear();

            this.singleChoiceActionSituacao.Items.Add(new ChoiceActionItem("Todas", 0));

            using (XPCollection <ConfiguracaoDocumentoSituacao> collection = new XPCollection <ConfiguracaoDocumentoSituacao>(((ObjectSpace)(View.ObjectSpace)).Session))
            {
                collection.Sorting.Add(new SortProperty("TxDescricao", SortingDirection.Ascending));

                foreach (ConfiguracaoDocumentoSituacao situacao in collection)
                {
                    if (SolicitacaoOrcamento.RnSeotsPorSituacao((((ObjectSpace)(View.ObjectSpace)).Session), situacao))
                    {
                        this.singleChoiceActionSituacao.Items.Add(new ChoiceActionItem(situacao.TxDescricao, situacao.Oid));
                        if (situacao.Oid.Equals(colab.ColaboradorUltimoFiltro.LastSituacaoFilterSeot))
                        {
                            selecSituacao = this.singleChoiceActionSituacao.Items.Count - 1;
                        }
                    }
                }
            }

            CriteriaOperator criteriaResponsavel = null, criteriaSituacao = null;
            ListView         listView               = (ListView)View;
            Colaborador      colaboradorResponsavel = Colaborador.GetColaboradorCurrent(session, colab.ColaboradorUltimoFiltro.LastUsuarioFilterSeot);
            Guid             seotSituacao           = colab.ColaboradorUltimoFiltro.LastSituacaoFilterSeot;

            singleChoiceActionUsuarios.SelectedIndex = selec;
            singleChoiceActionSituacao.SelectedIndex = selecSituacao;

            if (colaboradorResponsavel != null)
            {
                criteriaResponsavel = CriteriaOperator.Parse("Responsavel = ?", colaboradorResponsavel.Oid);
                listView.CollectionSource.Criteria["FiltroPorResponsavel"] = criteriaResponsavel;
            }

            if (seotSituacao != Guid.Empty)
            {
                criteriaSituacao = CriteriaOperator.Parse("Situacao =?", seotSituacao);
                listView.CollectionSource.Criteria["FiltroPorSituacao"] = criteriaSituacao;
            }
        }
        public void SolicitacaoOrcamentoTest_001()
        {
            #region Passo 1

            DateTime dtPrazo      = DateTime.Now.AddDays(1);
            string   emailCliente = "*****@*****.**";

            // Colaborador
            Colaborador colaborador = ColaboradorFactory.CriarColaborador(SessionTest, "000", DateTime.Now,
                                                                          "*****@*****.**", "Solicitacao", "Orcamento", "Historico", "nome.completo");

            // Situações
            ConfiguracaoDocumentoSituacao situacaoNaoIniciado = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Não Iniciado", "Green", CsColorDomain.System, true);
            ConfiguracaoDocumentoSituacao situacaoEmAndamento = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Em Andamento", "Red", CsColorDomain.System, true);
            ConfiguracaoDocumentoSituacao situacaoConcluido = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Concluído", "Blue", CsColorDomain.System, true);

            // Cliente
            EmpresaInstituicao cliente = EmpresaInstituicaoFactory.Criar(SessionTest, "Novo Cliente", "FPF",
                                                                         emailCliente, "0000-0000", true);

            // Solicitação de Orçamento
            SolicitacaoOrcamento solicitacao = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
                                                                                                     situacaoNaoIniciado, CsPrioridade.Alta, "Teste1", dtPrazo, cliente);

            solicitacao.Reload();

            // Dados do cliente
            Assert.AreEqual(cliente.TxNome, solicitacao.TxContatoCliente,
                            "O nome do cliente deveria ser o mesmo contato na Solicitação de Orçamento");
            Assert.AreEqual(cliente.TxEmail, solicitacao.TxEmailContatoCliente,
                            "O email do cliente deveria ser o mesmo email do contato na Solicitação de Orçamento");
            Assert.AreEqual(cliente.TxFoneFax, solicitacao.TxFone,
                            "O fone do cliente deveria ser o mesmo fone do contato na Solicitação de Orçamento");

            // Emails
            Assert.AreEqual(string.Empty, solicitacao.TxCc,
                            "A quantidade de emails para envio com cópia deveria ser 0, pois nenhum email foi cadastrado.");
            Assert.AreEqual(string.Empty, solicitacao.TxCco,
                            "A quantidade de emails para envio com cópia oculta deveria ser 0, pois nenhum email foi cadastrado.");

            #endregion

            #region Passo 2

            solicitacao.TxCc = "*****@*****.**"; // Adicionando email para envio
            solicitacao.Save();                  // Persistindo

            // Verificação de envio de email
            Assert.AreEqual(true, solicitacao._EmailEnviado,
                            "O email deveria ter sido enviado");

            // Verificação das datas
            Assert.AreEqual(solicitacao.DtEmissao.Date, solicitacao.DtConclusao.Date,
                            "A data de emissão deveria ser a mesma de conclusão");

            // Verificação do código gerado
            Assert.AreEqual("FPF.01/2012", solicitacao.TxCodigo,
                            "O código deveria estar de acordo com o padrão");

            // Verificação da quantidade de dias gastos
            Assert.AreEqual(1, solicitacao._DiasGastos,
                            "A quantidade de dias gastos deveria ser 1.");

            #endregion

            #region Passo 3

            // Data prazo inválida
            solicitacao.DtPrazo = DateTime.Now.AddDays(-1);
            Assert.AreEqual(ValidationState.Valid, ValidationUtil.GetRuleState(solicitacao,
                                                                               "ValidarDtPrazo", DefaultContexts.Save));

            solicitacao.DtPrazo = dtPrazo; // Retornando à data anterior

            #endregion

            #region Passo 4

            // Email inválido
            solicitacao.TxEmailContatoCliente = "email";

            Assert.AreEqual(ValidationState.Invalid, ValidationUtil.GetRuleState(solicitacao,
                                                                                 "ValidarEmailContatoCliente", DefaultContexts.Save));

            solicitacao.TxEmailContatoCliente = emailCliente; // Retornando ao email anterior

            #endregion

            #region Passo 5

            // Alteração dos dados do cliente
            solicitacao.TxContatoCliente      = "New Client";
            solicitacao.TxEmailContatoCliente = "*****@*****.**";
            solicitacao.TxFone = "1111-1111";

            solicitacao.Save();

            Assert.AreEqual("New Client", cliente.TxNome,
                            "O nome deveria ter mudado no objeto de EmpresaInstituicao");

            Assert.AreEqual("*****@*****.**", cliente.TxEmail,
                            "O email deveria ter mudado no objeto de EmpresaInstituicao");

            Assert.AreEqual("1111-1111", cliente.TxFoneFax,
                            "O fone/fax deveria ter mudado no objeto de EmpresaInstituicao");

            #endregion

            #region Passo 6

            // [email protected] - Cc
            ConfiguracaoDocumentoSituacaoEmailCc emailCcNaoIniciado =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCc(SessionTest, "*****@*****.**",
                                                                       situacaoNaoIniciado, true);

            // [email protected] - Cco
            ConfiguracaoDocumentoSituacaoEmailCco emailCcoNaoIniciado =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCco(SessionTest, "*****@*****.**",
                                                                        situacaoNaoIniciado, true);

            // [email protected] - Cc
            ConfiguracaoDocumentoSituacaoEmailCc emailCcEmAndamento =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCc(SessionTest, "*****@*****.**",
                                                                       situacaoEmAndamento, true);

            // [email protected] - Cco
            ConfiguracaoDocumentoSituacaoEmailCco emailCcoEmAndamento =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCco(SessionTest, "*****@*****.**",
                                                                        situacaoEmAndamento, true);

            // [email protected] - Cc
            ConfiguracaoDocumentoSituacaoEmailCc emailCcConcluido =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCc(SessionTest, "*****@*****.**",
                                                                       situacaoConcluido, true);

            // [email protected] - Cco
            ConfiguracaoDocumentoSituacaoEmailCco emailCcoConcluido =
                ConfiguracaoDocumentoSituacaoEmailFactory.CriarEmailCco(SessionTest, "*****@*****.**",
                                                                        situacaoConcluido, true);

            situacaoNaoIniciado.ComCopia.Add(emailCcNaoIniciado);
            situacaoNaoIniciado.ComCopiaOculta.Add(emailCcoNaoIniciado);

            situacaoEmAndamento.ComCopia.Add(emailCcEmAndamento);
            situacaoEmAndamento.ComCopiaOculta.Add(emailCcoEmAndamento);

            situacaoConcluido.ComCopia.Add(emailCcConcluido);
            situacaoConcluido.ComCopiaOculta.Add(emailCcoConcluido);

            solicitacao.Situacao = situacaoEmAndamento; // Simular troca de situação
            solicitacao.Situacao = situacaoNaoIniciado; // Selecionando a situação "Não Iniciado"

            // Com Cópia
            Assert.AreEqual(1, solicitacao.TxCc.Split(';').Length, "Deveria ter sido carregado apenas 1 email");

            // Com Cópia Oculta
            Assert.AreEqual(string.Empty, solicitacao.TxCco, "Deveria ter sido carregado nenhum email");

            #endregion

            #region Passo 7

            solicitacao.Situacao = situacaoEmAndamento; // Selecionando a situação "Em Andamento"

            // Com Cópia

            /* Assert.AreEqual(1, solicitacao.ComCopia.Count, "Deveria ter sido carregado apenas 1 email");
             * Assert.AreEqual(situacaoEmAndamento.ComCopia[0].TxEmail, solicitacao.ComCopia[0].TxEmail,
             * "O email carregado deveria ser o mesmo email da situação");
             *
             * // Com Cópia Oculta
             * Assert.AreEqual(1, solicitacao.ComCopiaOculta.Count, "Deveria ter sido carregado apenas 1 email");
             * Assert.AreEqual(situacaoEmAndamento.ComCopiaOculta[0].TxEmail, solicitacao.ComCopiaOculta[0].TxEmail,
             * "O email carregado deveria ser o mesmo email da situação");
             *
             #endregion
             *
             #region Passo 8
             *
             * solicitacao.Situacao = situacaoConcluido; // Selecionando a situação "Concluído"
             *
             * // Com Cópia
             * Assert.AreEqual(1, solicitacao.ComCopia.Count, "Deveria ter sido carregado apenas 1 email");
             * Assert.AreEqual(situacaoConcluido.ComCopia[0].TxEmail, solicitacao.ComCopia[0].TxEmail,
             * "O email carregado deveria ser o mesmo email da situação");
             *
             * // Com Cópia Oculta
             * Assert.AreEqual(1, solicitacao.ComCopiaOculta.Count, "Deveria ter sido carregado apenas 1 email");
             * Assert.AreEqual(situacaoConcluido.ComCopiaOculta[0].TxEmail, solicitacao.ComCopiaOculta[0].TxEmail,
             * "O email carregado deveria ser o mesmo email da situação");
             *
             * // Persistindo
             * solicitacao.Save();
             *
             * // Verificação de envio de email
             * Assert.AreEqual(true, solicitacao._EmailEnviado,
             * "O email deveria ter sido enviado");
             *
             #endregion
             *
             #region Passo 9
             *
             * // Solicitação de Orçamento nova
             * SolicitacaoOrcamento solicitacao02 = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
             * situacaoNaoIniciado, CsPrioridade.Alta, "Teste1", dtPrazo, cliente);
             *
             * Assert.AreEqual(ValidationState.Invalid, ValidationUtil.GetRuleState(solicitacao02,
             * "SolicitacaoOrcamento_TxTitulo_Unique", DefaultContexts.Save));
             *
             #endregion
             *
             #region Passo 10
             *
             * solicitacao02 = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
             * situacaoNaoIniciado, CsPrioridade.Alta, "Teste2", dtPrazo, cliente);
             *
             * // Novas Solicitações de Orçamento
             * SolicitacaoOrcamento solicitacao03 = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
             * situacaoNaoIniciado, CsPrioridade.Alta, "Teste3", dtPrazo, cliente);
             *
             * SolicitacaoOrcamento solicitacao04 = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
             * situacaoNaoIniciado, CsPrioridade.Alta, "Teste4", dtPrazo, cliente);
             *
             * // Persistência
             * solicitacao02.Save();
             * solicitacao03.Save();
             * solicitacao04.Save();
             *
             * // Verificação dos códigos gerados
             * Assert.AreEqual("FPF.02/2011", solicitacao02.TxCodigo,
             * "O código deveria estar de acordo com o padrão");
             *
             * Assert.AreEqual("FPF.03/2011", solicitacao03.TxCodigo,
             * "O código deveria estar de acordo com o padrão");
             *
             * Assert.AreEqual("FPF.04/2011", solicitacao04.TxCodigo,
             * "O código deveria estar de acordo com o padrão");*/

            #endregion
        }
        public void SolicitacaoEditarSalvarOrcamentlo()
        {
            //Criar uma solicitação de orçamento com a situação "Em revisão técnica"
            //Inicio
            //Passo 1
            DateTime dtPrazo      = DateTime.Now;
            string   data         = dtPrazo.ToString("dd/MM/yyyy");
            string   emailCliente = "*****@*****.**";

            // Colaborador
            Colaborador colaborador = ColaboradorFactory.CriarColaborador(SessionTest, "000", DateTime.Now,
                                                                          "*****@*****.**", "Solicitacao", "Orcamento", "Historico", "nome.completo");

            // Situações
            ConfiguracaoDocumentoSituacao situacaoEmrevisaoTecnica = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Em Revisão Técnica", "black", CsColorDomain.System, true);

            EmpresaInstituicao cliente = EmpresaInstituicaoFactory.Criar(SessionTest, "Novo Cliente", "FPF",
                                                                         emailCliente, "0000-0000", true);

            //histórico da solicitação de orçamento
            // Solicitação de orçamento
            SolicitacaoOrcamento solicitacao = SolicitacaoOrcamentoFactory.CriarSolicitacaoOrcamento(SessionTest, colaborador,
                                                                                                     situacaoEmrevisaoTecnica, CsPrioridade.Alta, "TesteEditarSalvarSolicitação", dtPrazo, cliente);

            solicitacao.Save();
            solicitacao.Reload();

            // Dados do cliente
            //solicitacao.Cliente = cliente;
            string texto = solicitacao._TextoEmail;

            solicitacao.SolicitacaoOrcamentoHistoricos[0].Comentario = "Teste cadastrar solicitação";

            Assert.AreEqual("Em Revisão Técnica", solicitacao.Situacao.TxDescricao, "Visualizar no grind situação foi alterada");
            //testar e-mail
            Assert.IsTrue((new Regex(String.Format(".<td>{0:dd/MM/yyyy}.", dtPrazo))).IsMatch(texto),
                          "O email deveria conter a data de criação do histórico");

            Assert.IsTrue((new Regex(".<td>Em Revisão Técnica</td>.")).IsMatch(texto),
                          "O email deveria conter a situação em revisão técnica");
            //testa Histórico
            Assert.AreEqual("Em Revisão Técnica", solicitacao.SolicitacaoOrcamentoHistoricos[0].Situacoes.TxDescricao,
                            "A situação deveria aparecer no histórico");

            Assert.AreEqual(dtPrazo.ToString("dd/MM/yyyy"), solicitacao.SolicitacaoOrcamentoHistoricos[0].DataHora.ToString("dd/MM/yyyy"),
                            "A data atual deveria aparecer no histórico");

            Assert.IsNotNull(solicitacao.SolicitacaoOrcamentoHistoricos[0].Comentario,
                             "O comentário deveria aparecer no histórico");

            //passo 2
            //Editar a solicitação de orçamento da pré-condição.
            ConfiguracaoDocumentoSituacao situacaoEntregue = ConfiguracaoDocumentoSituacaoFactory.CriarConfiguracaoDocumentoSituacao(
                SessionTest, "Entregue", "blue", CsColorDomain.System, true);

            solicitacao.Situacao     = situacaoEntregue;
            solicitacao.TxObservacao = "Solicitação foi mudada para entregue";

            solicitacao.Save();
            string texto2 = solicitacao._TextoEmail;

            Assert.AreEqual("Entregue", solicitacao.Situacao.TxDescricao, "Situação deve ter sido alterada para entregue");
            //testa Histórico, com situação = entregue
            Assert.AreEqual("Entregue", solicitacao.SolicitacaoOrcamentoHistoricos[0].Situacoes.TxDescricao,
                            "A situação entregue deveria aparecer no histórico");

            Assert.AreEqual(dtPrazo.ToString("dd/MM/yyyy"), solicitacao.SolicitacaoOrcamentoHistoricos[0].DataHora.ToString("dd/MM/yyyy"),
                            "A data atual deveria aparecer no histórico");

            Assert.IsNotNull(solicitacao.SolicitacaoOrcamentoHistoricos[0].Comentario,
                             "O comentário deveria aparecer no histórico");

            //testar e-mail, com situação = entregue
            Assert.IsTrue((new Regex(String.Format(".<td>{0:dd/MM/yyyy}.", dtPrazo))).IsMatch(texto2),
                          "O email deveria conter a data de criação do histórico");
        }