Beispiel #1
0
        /// <summary>
        /// Salva os dados do setor.
        /// </summary>
        /// <param name="setor"></param>
        /// <returns></returns>
        public Colosoft.Business.SaveResult SalvarSetor(Entidades.Setor setor)
        {
            setor.Require("setor").NotNull();

            if (!setor.ExistsInStorage)
            {
                var numeroSequencia = SourceContext.Instance.CreateQuery()
                                      .From <Glass.Data.Model.Setor>()
                                      .Select("MAX(NumeroSequencia)")
                                      .Execute()
                                      .Select(f => f.GetInt32(0))
                                      .FirstOrDefault() + 1;

                // Gera um novo número de sequência para este novo setor
                setor.NumeroSequencia = numeroSequencia;
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = setor.Save(session);

                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToSaveResult());
            }
        }
Beispiel #2
0
        /// <summary>
        /// Apaga os dados do setor.
        /// </summary>
        /// <param name="setor"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarSetor(Entidades.Setor setor)
        {
            setor.Require("setor").NotNull();

            var mensagensValidacao = ValidarExclusaoSetor(setor.IdSetor);

            if (mensagensValidacao.Any())
            {
                return(new Colosoft.Business.DeleteResult(false, mensagensValidacao.Join("\n")));
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = setor.Delete(session);

                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToDeleteResult());
            }
        }
Beispiel #3
0
        /// <summary>
        /// Valida a atualização dos dados do setor.
        /// </summary>
        /// <param name="setor"></param>
        /// <returns></returns>
        IMessageFormattable[] Entidades.IProvedorSetor.ValidaAtualizacao(Entidades.Setor setor)
        {
            if (setor.ExistsInStorage)
            {
                //Verifica Situação do setor antes de alterá-lo pois caso caso a alteração for somente no numseq o sistema não precisa verificar se está inativo novamente
                var setorAtual = SourceContext.Instance.CreateQuery()
                                 .From <Glass.Data.Model.Setor>()
                                 .Where("IdSetor=?id").Add("?id", setor.IdSetor)
                                 .ProcessLazyResult <Entidades.Setor>()
                                 .FirstOrDefault();

                if (setorAtual.Situacao != Situacao.Inativo && setor.Situacao == Situacao.Inativo)
                {
                    if (SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.FuncionarioSetor>("fs")
                        .Where("fs.IdSetor=?id")
                        .Add("?id", setor.IdSetor)
                        .GroupBy("fs.IdSetor")
                        .ExistsResult())
                    {
                        return new IMessageFormattable[]
                               {
                                   (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à funcionário(s) de produção. " +
                                                  "Para inativá-lo, desassocie o setor do funcionário.", setor.Descricao)).GetFormatter()
                               }
                    }
                    ;

                    /* Chamado 51830. */
                    if (SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.ProdutoPedidoProducao>("ppp")
                        .Where("ppp.IdSetor=?id AND ppp.Situacao=?situacaoProdutoProducao")
                        .Add("?id", setor.IdSetor)
                        .Add("?situacaoProdutoProducao", (int)Glass.Data.Model.ProdutoPedidoProducao.SituacaoEnum.Producao)
                        .GroupBy("ppp.IdSetor")
                        .ExistsResult())
                    {
                        return new IMessageFormattable[]
                               {
                                   (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à etiqueta(s) de produção. " +
                                                  "Para inativá-lo, retire a(s) etiqueta(s) deste setor.", setor.Descricao)).GetFormatter()
                               }
                    }
                    ;

                    /* Chamado 56684. */
                    if (SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.RoteiroProducaoSetor>("rps")
                        .Where("rps.IdSetor=?id")
                        .Add("?id", setor.IdSetor)
                        .GroupBy("rps.IdSetor")
                        .ExistsResult())
                    {
                        return new IMessageFormattable[]
                               {
                                   (string.Format("O setor {0} não pode ser inativado, pois, ele está associado à roteiro(s) de produção. " +
                                                  "Para inativá-lo, retire este setor do(s) roteiro(s) de produção.", setor.Descricao)).GetFormatter()
                               }
                    }
                    ;

                    /* Chamado 56684. */
                    if (SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.RoteiroProducaoEtiqueta>("rpe")
                        .Where("rpe.IdSetor=?id")
                        .Add("?id", setor.IdSetor)
                        .GroupBy("rpe.IdSetor")
                        .ExistsResult())
                    {
                        return new IMessageFormattable[]
                               {
                                   (string.Format("O setor {0} não pode ser inativado, pois, existem etiquetas configuradas com este setor em seu roteiro de produção.", setor.Descricao)).GetFormatter()
                               }
                    }
                    ;
                }
                else if (setor.Situacao == Situacao.Ativo)
                {
                    if (setor.ChangedProperties.Contains("Situacao") &&
                        setor.Tipo == Glass.Data.Model.TipoSetor.Entregue && SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.Setor>("s")
                        .Where("Situacao=?ativo AND Tipo=?entregue")
                        .Add("?ativo", Situacao.Ativo)
                        .Add("?entregue", Glass.Data.Model.TipoSetor.Entregue).ExistsResult())
                    {
                        return(new IMessageFormattable[]
                        {
                            (string.Format("O setor {0} não pode ser ativado, pois, já existe um setor do tipo Entregue ativo. ", setor.Descricao)).GetFormatter()
                        });
                    }

                    if (setor.ChangedProperties.Contains("Situacao") &&
                        setor.Tipo == Glass.Data.Model.TipoSetor.ExpCarregamento && SourceContext.Instance.CreateQuery()
                        .From <Glass.Data.Model.Setor>("s")
                        .Where("Situacao=?ativo AND Tipo=?expCarregamento")
                        .Add("?ativo", Situacao.Ativo)
                        .Add("?expCarregamento", Glass.Data.Model.TipoSetor.ExpCarregamento).ExistsResult())
                    {
                        return(new IMessageFormattable[]
                        {
                            (string.Format("O setor {0} não pode ser ativado, pois, já existe um setor do tipo Expedição Carregamento ativo. ", setor.Descricao)).GetFormatter()
                        });
                    }
                }
            }
            else
            {
                if (setor.Tipo == Glass.Data.Model.TipoSetor.Entregue && SourceContext.Instance.CreateQuery()
                    .From <Glass.Data.Model.Setor>("s")
                    .Where("Situacao=?ativo AND Tipo=?entregue")
                    .Add("?ativo", Situacao.Ativo)
                    .Add("?entregue", Glass.Data.Model.TipoSetor.Entregue).ExistsResult())
                {
                    return(new IMessageFormattable[]
                    {
                        (string.Format("Não é possivel cadastrar o setor {0}, pois, já existe um setor do tipo Entregue ativo. ", setor.Descricao)).GetFormatter()
                    });
                }

                if (setor.Tipo == Glass.Data.Model.TipoSetor.ExpCarregamento && SourceContext.Instance.CreateQuery()
                    .From <Glass.Data.Model.Setor>("s")
                    .Where("Situacao=?ativo AND Tipo=?expCarregamento")
                    .Add("?ativo", Situacao.Ativo)
                    .Add("?expCarregamento", Glass.Data.Model.TipoSetor.ExpCarregamento).ExistsResult())
                {
                    return(new IMessageFormattable[]
                    {
                        (string.Format("Não é possivel cadastrar o setor {0}, pois, já existe um setor do tipo Expedição Carregamento ativo. ", setor.Descricao)).GetFormatter()
                    });
                }
            }

            return(new IMessageFormattable[0]);
        }

        #endregion
    }
}