Beispiel #1
0
        public bool ExisteDuplicidade(HistoricoDistribuidor historicoDistribuidor, Boolean create, ParametroGlobal qtdDistribuidorPreferencial)
        {
            if (historicoDistribuidor.Revenda != null)
            {
                if (create || (historicoDistribuidor.Status.HasValue && historicoDistribuidor.Status.Value == (int)Enum.HistoricoDistribuidor.Statecode.Ativo))
                {
                    var lista = new List <HistoricoDistribuidor>();

                    if (historicoDistribuidor.DataFim == null)
                    {
                        lista = RepositoryService.HistoricoDistribuidor.ListarPorRevendaSemDataFim(historicoDistribuidor.Revenda.Id, historicoDistribuidor.DataInicio);
                    }
                    else
                    {
                        lista = RepositoryService.HistoricoDistribuidor.ListarPorRevendaComDataFim(historicoDistribuidor.Revenda.Id, historicoDistribuidor.DataInicio, historicoDistribuidor.DataFim);
                    }
                    if (historicoDistribuidor.ID.HasValue)
                    {
                        lista.RemoveAll(x => x.ID.Value == historicoDistribuidor.ID.Value);
                    }
                    if (lista.Count >= Convert.ToInt32(qtdDistribuidorPreferencial.Valor)) //valida quantidade cadastrada no parâmetro global
                    {
                        return(lista.Count > 0);
                    }
                }
            }

            return(false);
        }
Beispiel #2
0
 public bool ValidaDataRetroativa(HistoricoDistribuidor historicoDistribuidor)
 {
     if (historicoDistribuidor.DataFim.HasValue && historicoDistribuidor.DataFim < historicoDistribuidor.DataInicio)
     {
         throw new ArgumentException("(CRM) O campo 'Data Fim' não pode ser menor que a 'Data Início'!");
     }
     return(true);
 }
Beispiel #3
0
        public void ValidaDuplicidade(HistoricoDistribuidor historicoDistribuidor, Boolean create)
        {
            var quantidadeDistribuidorPreferencial = RepositoryService.ParametroGlobal.ObterPorCodigoTipoParametroGlobal((int)Domain.Enum.TipoParametroGlobal.QuantidadeDistribuidorPref);

            if (ValidaDataRetroativa(historicoDistribuidor))
            {
                if (ExisteDuplicidade(historicoDistribuidor, create, quantidadeDistribuidorPreferencial))
                {
                    throw new ArgumentException("(CRM) Já existem outros " + quantidadeDistribuidorPreferencial.Valor + " registros ativos na mesma data de vigência.");
                }
            }
        }
Beispiel #4
0
        public Model.HistoricoDistribuidor DefinirPropriedades(Intelbras.Message.Helper.MSG0179 xml)
        {
            if (string.IsNullOrEmpty(xml.CodigoDistribuidor))
            {
                throw new ArgumentException("(CRM) O campo 'CodigoDistribuidor' é obrigatório!");
            }

            if (string.IsNullOrEmpty(xml.CodigoConta))
            {
                throw new ArgumentException("(CRM) O campo 'CodigoConta' é obrigatório!");
            }

            if (!xml.DataInicio.HasValue)
            {
                throw new ArgumentException("(CRM) O campo 'DataInicio' é obrigatório!");
            }

            if (string.IsNullOrEmpty(xml.Nome))
            {
                throw new ArgumentException("(CRM) O campo 'Nome' é obrigatório!");
            }

            var historicoDistribuidor = new HistoricoDistribuidor(this.Organizacao, this.IsOffline)
            {
                Nome         = xml.Nome,
                Distribuidor = new SDKore.DomainModel.Lookup(new Guid(xml.CodigoDistribuidor), SDKore.Crm.Util.Utility.GetEntityName <Conta>()),
                Revenda      = new SDKore.DomainModel.Lookup(new Guid(xml.CodigoConta), SDKore.Crm.Util.Utility.GetEntityName <Conta>()),
                DataInicio   = xml.DataInicio,
                DataFim      = xml.DataFim,
                MotivoTroca  = xml.MotivoTroca,
                Status       = xml.Situacao
            };

            //verifica se tem distribuidor pai
            if (!string.IsNullOrEmpty(xml.CodigoHistoricoDistribuidorAnterior))
            {
                historicoDistribuidor.DistribuidorPai = new SDKore.DomainModel.Lookup(new Guid(xml.CodigoHistoricoDistribuidorAnterior), SDKore.Crm.Util.Utility.GetEntityName <Conta>());
            }

            //Controle Looping Msg
            historicoDistribuidor.IntegrarNoPlugin = true;

            Guid id;

            if (Guid.TryParse(xml.CodigoHistoricoDistribuidor, out id))
            {
                historicoDistribuidor.ID = id;
            }

            return(historicoDistribuidor);
        }
Beispiel #5
0
        public void ValidaCamposObrigatorios(HistoricoDistribuidor historicoDistribuidor)
        {
            if (historicoDistribuidor.Revenda == null)
            {
                throw new ArgumentException("(CRM) O campo 'Revenda' é obrigatório!");
            }

            if (historicoDistribuidor.Distribuidor == null)
            {
                throw new ArgumentException("(CRM) O campo 'Distribuidor' é obrigatório!");
            }

            if (!historicoDistribuidor.DataInicio.HasValue)
            {
                throw new ArgumentException("(CRM) O campo 'Data Início' é obrigatório!");
            }
        }
Beispiel #6
0
        public Intelbras.Message.Helper.MSG0179 DefinirPropriedades(HistoricoDistribuidor historicoDistribuidor)
        {
            var xml = new Intelbras.Message.Helper.MSG0179(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), historicoDistribuidor.Nome.Truncate(40));

            xml.CodigoHistoricoDistribuidor = historicoDistribuidor.ID.Value.ToString();
            xml.Nome        = historicoDistribuidor.Nome;
            xml.MotivoTroca = historicoDistribuidor.MotivoTroca;
            if (historicoDistribuidor.DataInicio.HasValue)
            {
                xml.DataInicio = historicoDistribuidor.DataInicio.Value.ToLocalTime();
            }
            else
            {
                xml.DataInicio = null;
            }
            if (historicoDistribuidor.DataFim.HasValue)
            {
                xml.DataFim = historicoDistribuidor.DataFim.Value.ToLocalTime();
            }
            else
            {
                xml.DataFim = null;
            }
            xml.Situacao = (historicoDistribuidor.Status.HasValue ? historicoDistribuidor.Status.Value : (int)Enum.StateCode.Ativo);

            if (historicoDistribuidor.Revenda != null)
            {
                xml.CodigoConta = historicoDistribuidor.Revenda.Id.ToString();
            }

            if (historicoDistribuidor.Distribuidor != null)
            {
                xml.CodigoDistribuidor = historicoDistribuidor.Distribuidor.Id.ToString();
            }

            if (historicoDistribuidor.DistribuidorPai != null)
            {
                xml.CodigoHistoricoDistribuidorAnterior = historicoDistribuidor.DistribuidorPai.Id.ToString();
            }

            return(xml);
        }
Beispiel #7
0
        public string Enviar(HistoricoDistribuidor objModel)
        {
            var    mensagem   = DefinirPropriedades(objModel);
            var    integracao = new Servicos.Integracao(this.Organizacao, this.IsOffline);
            string retMsg     = string.Empty;

            if (integracao.EnviarMensagemBarramento(mensagem.GenerateMessage(true), "1", "1", out retMsg))
            {
                var retorno = CarregarMensagem <Pollux.MSG0179R1>(retMsg);
                if (!retorno.Resultado.Sucesso)
                {
                    throw new ArgumentException("(CRM) " + retorno.Resultado.Mensagem);
                }
            }
            else
            {
                Intelbras.Message.Helper.ERR0001 erro001 = CarregarMensagem <Pollux.ERR0001>(retMsg);
                throw new ArgumentException(string.Concat("(CRM) Erro de Integração \n", erro001.GenerateMessage(false)));
            }
            return(retMsg);
        }
Beispiel #8
0
        public Guid Persistir(HistoricoDistribuidor item)
        {
            HistoricoDistribuidor historicoDistribuidor = new HistoricoDistribuidor(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);

            if (item.ID.HasValue)
            {
                RepositoryService.HistoricoDistribuidor.Update(item);

                historicoDistribuidor = RepositoryService.HistoricoDistribuidor.Retrieve(item.ID.Value);

                if (item.Status != null && !item.Status.Equals(historicoDistribuidor.Status) && item.ID != null)
                {
                    MudarStatus(item.ID.Value, item.Status.Value);
                }
            }
            else
            {
                item.ID = RepositoryService.HistoricoDistribuidor.Create(item);
            }

            return(item.ID.Value);
        }
Beispiel #9
0
        protected override void Execute(CodeActivityContext context)
        {
            try
            {
                IWorkflowContext            workflowContext = context.GetExtension <IWorkflowContext>();
                IOrganizationServiceFactory serviceFactory  = context.GetExtension <IOrganizationServiceFactory>();
                IOrganizationService        service         = serviceFactory.CreateOrganizationService(workflowContext.UserId);

                RepositoryService     RepositoryService = new RepositoryService(workflowContext.OrganizationName, workflowContext.IsExecutingOffline);
                HistoricoDistribuidor historico         = RepositoryService.HistoricoDistribuidor.Retrieve(workflowContext.PrimaryEntityId);
                string   datasExecucao    = SDKore.Configuration.ConfigurationManager.GetSettingValue("Intelbras.CRM2013.Application.Workflow.DataExecucaohistoricoDistribuidor", true);
                string[] datas            = datasExecucao.Split(';');
                bool     controleExecucao = false;
                foreach (string data in datas)
                {
                    if (Convert.ToDateTime(data + "/" + DateTime.Now.Year.ToString()) == DateTime.Now.Date)
                    {
                        //if (DateTime.Now.Day == 1 && (DateTime.Now.Month == 1 || DateTime.Now.Month == 4 || DateTime.Now.Month == 7 || DateTime.Now.Month == 10))
                        //if (DateTime.Now.Day == 24 && (DateTime.Now.Month == 1 || DateTime.Now.Month == 3 || DateTime.Now.Month == 7 || DateTime.Now.Month == 10))
                        //{
                        //1- Identificar os registros ativos na entidade "Histórico de Ditribuidores" cuja data de início seja maior ou igual a data de início do trimestre
                        if (historico.DataInicio.HasValue && historico.DataInicio.Value.Date <= DateTime.Now.Date && historico.DataFim.HasValue && historico.DataFim.Value.Date >= DateTime.Now.Date)
                        {
                            RepositoryService.HistoricoDistribuidor.AlterarStatus(historico.ID.Value, 993520000); //Fluxo Concluído 993.520.000

                            //2- Nas revendas relacionadas à esses registros, alterar o valor do atributo "Distribuidor Preferencial" para registrar o novo distribuidor.
                            Conta conta = RepositoryService.Conta.Retrieve(historico.Revenda.Id);
                            conta.ID = historico.Revenda.Id;
                            RepositoryService.Conta.Update(conta);

                            //Cada alteração deverá disparar uma mensagem "MSG0072 - REGISTRA_CONTA" para atualizar os sistemas envolvidos.
                            string nomeAbrevMatriEconom = String.Empty;
                            string nomeAbrevRet         = String.Empty;
                            string codigoClienteRet     = String.Empty;
                            var    mensagem             = new Domain.Integracao.MSG0072(workflowContext.OrganizationName, workflowContext.IsExecutingOffline);
                            mensagem.Enviar(conta, ref nomeAbrevRet, ref codigoClienteRet, ref nomeAbrevMatriEconom);
                            controleExecucao = true;
                        }
                        else if (historico.DataFim.HasValue && historico.DataFim.Value.Date < DateTime.Now.Date)
                        {
                            RepositoryService.HistoricoDistribuidor.AlterarStatus(historico.ID.Value, 993520000); //Fluxo Concluído 993.520.000
                        }
                        else
                        {
                            //Mantém o registro ativo
                            RepositoryService.HistoricoDistribuidor.AlterarStatus(historico.ID.Value, 0);
                        }
                    }
                }
                if (!controleExecucao)
                {
                    //Mantém o registro ativo
                    RepositoryService.HistoricoDistribuidor.AlterarStatus(historico.ID.Value, 0);
                }
            }
            catch (Exception e)
            {
                SDKore.Helper.Error.Create(e, System.Diagnostics.EventLogEntryType.Information);
                throw new InvalidWorkflowException(e.Message + " :: " + e.StackTrace, e);
            }
        }
Beispiel #10
0
 public void Atualizar(HistoricoDistribuidor historicoDistribuidor)
 {
     RepositoryService.HistoricoDistribuidor.Update(historicoDistribuidor);
 }
Beispiel #11
0
        public void Integrar(HistoricoDistribuidor historicoDistribuidor)
        {
            var mensagem = new Intelbras.CRM2013.Domain.Integracao.MSG0179(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline);

            mensagem.Enviar(historicoDistribuidor);
        }