Exemplo n.º 1
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();

            Intelbras.CRM2013.Domain.Model.CompromissosDoPrograma mCompromissoPrograma = e.Parse <Intelbras.CRM2013.Domain.Model.CompromissosDoPrograma>(context.OrganizationName, context.IsExecutingOffline, userService);
            CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, userService);
            ParametroGlobalService     ServiceParametroGlobal     = new ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, userService);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.Update:
            {
                switch ((Stage)context.Stage)
                {
                case Stage.PostOperation:
                    if (mCompromissoPrograma.TipoMonitoramento == (int)Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas)
                    {
                        Domain.Model.ParametroGlobal paramGlobal = ServiceParametroGlobal.ObterFrequenciaAtividadeChecklist(mCompromissoPrograma.ID.Value);

                        if (paramGlobal == null || paramGlobal.Valor == null)
                        {
                            throw new ApplicationException("Operação cancelada. Parâmetro global de frequência de checkList não existe para este compromisso.");
                        }
                    }
                    break;
                }
            }
            break;
            }
        }
Exemplo n.º 2
0
        public double CalcularDiferencaHorasEntreDatas(IPluginExecutionContext context, DateTime dataInicial, DateTime dataFinal)
        {
            var diasDescontar  = 0;
            var horasDescontar = 0;

            var parametroGlobalService = new ParametroGlobalService(context.OrganizationName, false);

            var parametroGlobalFeriados = parametroGlobalService.ObterPor((int)TipoParametroGlobal.Feriados);

            var datasFeriados = parametroGlobalFeriados.Valor;

            string[] feriadosFixos = new string[0];
            if (!string.IsNullOrEmpty(datasFeriados))
            {
                feriadosFixos = datasFeriados.Split(';');
            }

            CalendarioDeFeriados calendario = new CalendarioDeFeriados(context.OrganizationName, false);
            var outrosFeriados = calendario.Feriados;

            TimeSpan diferencaEmHoras = dataFinal - dataInicial;

            for (int i = 1; i <= diferencaEmHoras.TotalDays; i++)
            {
                dataInicial = dataInicial.AddDays(1);

                if (dataInicial.DayOfWeek == DayOfWeek.Sunday || dataInicial.DayOfWeek == DayOfWeek.Saturday)
                {
                    diasDescontar++;
                }

                foreach (string feriado in feriadosFixos)
                {
                    if (!string.IsNullOrEmpty(feriado) && !string.IsNullOrWhiteSpace(feriado))
                    {
                        if (dataInicial.Date == Convert.ToDateTime(String.Format("{0}/{1}", feriado, DateTime.Now.Year.ToString())) &&
                            dataInicial.DayOfWeek != DayOfWeek.Sunday &&
                            dataInicial.DayOfWeek != DayOfWeek.Saturday)
                        {
                            diasDescontar++;
                        }
                    }
                }

                foreach (Feriado feriado in outrosFeriados)
                {
                    if (dataInicial.Date == feriado.DataInicio.Date &&
                        dataInicial.DayOfWeek != DayOfWeek.Sunday &&
                        dataInicial.DayOfWeek != DayOfWeek.Saturday)
                    {
                        diasDescontar++;
                    }
                }
            }

            horasDescontar = diasDescontar * 24;

            return(diferencaEmHoras.TotalHours - horasDescontar);
        }
Exemplo n.º 3
0
        public Intelbras.Message.Helper.MSG0138 DefinirPropriedades(List <Product> lstProd, List <ProdutosdaSolicitacao> prodSolicLst, List <PrecoProduto> precoProdutoLst, SolicitacaoBeneficio solicBenef)
        {
            Intelbras.Message.Helper.MSG0138 msg0138 = new Intelbras.Message.Helper.MSG0138(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), solicBenef.ID.ToString());
            var estabService = new EstabelecimentoService(this.Organizacao, this.IsOffline);

            var parametroGlobalCondPagamento = new ParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor((int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco);

            if (parametroGlobalCondPagamento == null)
            {
                throw new ArgumentException("(CRM) Parâmetro global de Condição de Pagamento não localizado [Código: " + (int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco + "]");
            }

            int codigoCondicaoPagamento;

            if (!int.TryParse(parametroGlobalCondPagamento.Valor, out codigoCondicaoPagamento))
            {
                throw new ArgumentException("(CRM) Parâmetro global de Condição de Pagamento não é um número inteiro [Código: " + (int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco + "]");
            }

            msg0138.CondicaoPagamento = codigoCondicaoPagamento;
            msg0138.Conta             = solicBenef.Canal.Id.ToString();

            msg0138.ProdutosItens = new List <Pollux.Entities.ProdutoValorIcmsItem>();
            foreach (var prodSolicObj in prodSolicLst)
            {
                var estabObj     = estabService.BuscaEstabelecimento(prodSolicObj.Estabelecimento.Id);
                var prodObj      = lstProd.Find(x => x.ID == prodSolicObj.Produto.Id);
                var precoProdObj = precoProdutoLst.Find(x => x.Produto.ID == prodSolicObj.Produto.Id);

                var tmpPolluxObj = new Pollux.Entities.ProdutoValorIcmsItem();
                tmpPolluxObj.Estabelecimento = estabObj.Codigo;
                tmpPolluxObj.CodigoProduto   = prodObj.Codigo;
                tmpPolluxObj.PrecoUnitario   = precoProdObj.ValorBase;

                msg0138.ProdutosItens.Add(tmpPolluxObj);
            }

            return(msg0138);
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            Console.WriteLine("PCI-Log de Atualização do Distribuidor Preferencial das Revendas");
            Console.WriteLine("Inicio do processo.");

            string organizationName       = SDKore.Configuration.ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");
            var    parametroGlobalService = new ParametroGlobalService(organizationName, false);

            var parametroGlobal = parametroGlobalService.ObterPor((int)TipoParametroGlobal.DataHistoricoDistribuidorRevenda);

            if (parametroGlobal == null || string.IsNullOrEmpty(parametroGlobal.Valor))
            {
                Console.WriteLine("Erro: (CRM) Parametro Global Data Histórico Distribuidor não configurado.");
                Console.WriteLine("Fim do processo.");
                GravaLog("Erro: (CRM) Parametro Global Data Histórico Distribuidor não configurado.");
                return;
            }

            var datasExecucao = parametroGlobal.Valor;

            string[] datas = datasExecucao.Split(';');

            foreach (string data in datas)
            {
                Console.WriteLine("Processando.");
                DateTime dataProcessar = Convert.ToDateTime(String.Format("{0}/{1}", data, DateTime.Now.Year.ToString()));
                if (dataProcessar == DateTime.Now.Date)
                {
                    var service      = new HistoricoDistribuidorService(organizationName, false);
                    var contaService = new ContaService(organizationName, false);
                    var historicos   = service.ListarPorPeriodo(dataProcessar);

                    foreach (var historico in historicos)
                    {
                        try
                        {
                            //2- Nas revendas relacionadas à esses registros, alterar o valor do atributo "Distribuidor Preferencial" para registrar o novo distribuidor.
                            var conta = contaService.BuscaConta(historico.Revenda.Id);
                            Console.WriteLine("Processando: " + conta.RazaoSocial);
                            conta.ID = historico.Revenda.Id;
                            conta.IntegrarNoPlugin      = true;
                            conta.DistribuidorPrincipal = new Lookup(historico.Distribuidor.Id, "");
                            contaService.Persistir(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(organizationName, false);
                            mensagem.Enviar(conta, ref nomeAbrevRet, ref codigoClienteRet, ref nomeAbrevMatriEconom);

                            service.AlterarStatus(historico.ID.Value, 993520000); //Fluxo Concluído 993.520.000
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Erro : " + ex.Message);
                            GravaLog(ex.Message);
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        private Domain.Model.Conta AdesaoRevenda(Domain.Model.Conta conta, RepositoryService repository)
        {
            var listaUnidadeNegocioProgramaPci = repository.UnidadeNegocio.ListarPorParticipaProgramaPci(true, "businessunitid", "name");

            var parametroGlobal = new ParametroGlobalService(repository).ObterPor((int)Domain.Enum.TipoParametroGlobal.CategoriaParaAdesaoRevendas);

            if (parametroGlobal == null)
            {
                throw new ArgumentException("(CRM) Parâmetro Global(" + (int)Domain.Enum.TipoParametroGlobal.CategoriaParaAdesaoRevendas + ") não encontrado!");
            }

            if (parametroGlobal.Categoria == null)
            {
                throw new ArgumentException("(CRM) A Categoria não está peenchida no Parâmetro Global(" + (int)Domain.Enum.TipoParametroGlobal.CategoriaParaAdesaoRevendas + ") não encontrado!");
            }

            var listaCategoriasDoCanal = repository.CategoriasCanal.ListarPor(conta);


            foreach (var item in listaUnidadeNegocioProgramaPci)
            {
                var inativar = listaCategoriasDoCanal.Find(x => x.UnidadeNegocios.Id == item.ID.Value &&
                                                           x.Status.Value == (int)Domain.Enum.CategoriaCanal.StateCode.Ativado &&
                                                           (x.Categoria.Id != parametroGlobal.Categoria.Id || x.Classificacao.Id != conta.Classificacao.Id || x.SubClassificacao.Id != conta.Subclassificacao.Id));

                if (inativar != null)
                {
                    repository.CategoriasCanal.AtualizarStatus(inativar.ID.Value, (int)Domain.Enum.CategoriaCanal.StateCode.Desativado, 2);
                }

                var existente = listaCategoriasDoCanal.Find(x => x.UnidadeNegocios.Id == item.ID.Value && x.Categoria.Id == parametroGlobal.Categoria.Id && x.Classificacao.Id == conta.Classificacao.Id && x.SubClassificacao.Id == conta.Subclassificacao.Id);

                if (existente == null)
                {
                    repository.CategoriasCanal.Create(new CategoriasCanal(repository.NomeDaOrganizacao, repository.IsOffline, repository.Provider)
                    {
                        Canal            = new SDKore.DomainModel.Lookup(conta.ID.Value, conta.RazaoSocial, SDKore.Crm.Util.Utility.GetEntityName(conta)),
                        Categoria        = parametroGlobal.Categoria,
                        Classificacao    = conta.Classificacao,
                        Nome             = item.Nome,
                        SubClassificacao = conta.Subclassificacao,
                        UnidadeNegocios  = new SDKore.DomainModel.Lookup(item.ID.Value, item.Nome, SDKore.Crm.Util.Utility.GetEntityName(item))
                    });
                }
                else
                {
                    if (existente.Status == (int)Domain.Enum.CategoriaCanal.StateCode.Desativado)
                    {
                        repository.CategoriasCanal.AtualizarStatus(existente.ID.Value, (int)Domain.Enum.CategoriaCanal.StateCode.Ativado, 1);
                    }
                }
            }

            repository.Conta.Update(new Conta(repository.NomeDaOrganizacao, repository.IsOffline, repository.Provider)
            {
                ID = conta.ID,
                ParticipantePrograma = (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim
            });

            return(conta);
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            var RepositoryService = new RepositoryService(OrganizationName, IsOffline);

            #region Busca os contratos com de termino daqui a 90 dias
            var             dataTermino          = DateTime.Today.AddDays(90);
            List <Contrato> lstContratosProximos = new ContratoService(OrganizationName, IsOffline).ObterContratosProximoVencimento(dataTermino);
            #endregion

            #region Busca os contratos com de termino hoje
            dataTermino = DateTime.Today;
            List <Contrato> lstContratosHoje = new ContratoService(OrganizationName, IsOffline).ObterContratosProximoVencimento(dataTermino);
            #endregion

            #region Recuperar os email para enviar os contratos que estão proximos a expirar.
            var email = new ParametroGlobalService(RepositoryService).ObterPor((int)Domain.Enum.TipoParametroGlobal.EmailContratoVencimento);
            #endregion

            if (lstContratosHoje.Count > 0)
            {
                string data       = DateTime.Today.GetDateTimeFormats('d')[5];
                string textoEmail = "<b> Contratos com vencimento para: </b>" + data + " <br />";
                textoEmail += "<b> Rotina retornou: </b>" + lstContratosHoje.Count + " contratos. <br />";

                textoEmail  = "<table width='100%'>";
                textoEmail += "<thead><tr><td align='center'>ID do Contrato</td><td align='center'>Nome do Contrato</td><td align='center'>Data de Término</td><td align='center'>Tipo de Vigência</td></tr></thead>";
                textoEmail += "<tbody>";

                foreach (var contrato in lstContratosHoje)
                {
                    textoEmail += "<tr>";
                    textoEmail += "<td align='center'>" + contrato.NumeroContrato + "</td>";
                    textoEmail += "<td align='center'>" + contrato.NomeContrato + "</td>";
                    textoEmail += "<td align='center'>" + data + "</td>";
                    textoEmail += "<td align='center'>" + contrato.TipoVigencia.ToString() + "</td>";
                    textoEmail += "</tr>";
                }
                textoEmail += "</tbody></table>";

                var emails = email.Valor.Split(';');
                foreach (var emailTemp in emails)
                {
                    RepositoryService.Email.EnviaEmailComLogdeRotinas(textoEmail, "Contratos com vencimento para hoje, " + data + ".", "", emailTemp);
                }
            }

            if (lstContratosProximos.Count > 0)
            {
                string data       = DateTime.Today.AddDays(60).GetDateTimeFormats('d')[5];
                string textoEmail = "<b> Contratos com vencimento para: </b>" + data + " <br />";
                textoEmail += "<b> Rotina retornou: </b>" + lstContratosProximos.Count + " contratos. <br />";

                string nomeArquivo = "Contratos_" + data + ".xlsx";
                textoEmail  = "<style>padding-left: 15px;border-bottom: 1px solid;</style><table width='100%'>";
                textoEmail += "<thead><tr><td align='center'>ID do Contrato</td><td align='center'>Nome do Contrato</td><td align='center'>Data de Término</td><td align='center'>Tipo de Vigência</td></tr></thead>";
                textoEmail += "<tbody>";

                foreach (var contrato in lstContratosProximos)
                {
                    textoEmail += "<tr>";
                    textoEmail += "<td align='center'>" + contrato.NumeroContrato + "</td>";
                    textoEmail += "<td align='center'>" + contrato.NomeContrato + "</td>";
                    textoEmail += "<td align='center'>" + data + "</td>";
                    textoEmail += "<td align='center'>" + contrato.TipoVigencia.ToString() + "</td>";
                    textoEmail += "</tr>";
                }
                textoEmail += "</tbody></table>";

                var emails = email.Valor.Split(';');
                foreach (var emailTemp in emails)
                {
                    RepositoryService.Email.EnviaEmailComLogdeRotinas(textoEmail, "Contratos com vencimento para daqui 60 dias, " + data + ".", "", emailTemp);
                }
            }
        }