public List <string> ListarAtividadesCheckup(Guid compromissoId) { List <string> lstTarefas = new List <string>(); ParametroGlobal parametroGlobal = new ParametroGlobalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider) .ObterPor((int)Enum.TipoParametroGlobal.AtividadesChecklist, null, null, null, null, compromissoId, null, null); if (parametroGlobal != null && !string.IsNullOrEmpty(parametroGlobal.Valor)) { return(ConverterParametroParaLista(parametroGlobal.Valor)); } else { return(new List <string>()); } }
public void TestarTarefaVisitaComercial() { string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); Domain.Servicos.TarefaService ServiceTarefas = new Domain.Servicos.TarefaService(organizationName, false); Domain.Model.Tarefa Tarefa = ServiceTarefas.BuscaTarefa(new Guid("BEC979ED-A74F-E411-93F5-00155D013E70")); if (Tarefa.ReferenteA.Type.Equals("account")) { Domain.Model.Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(organizationName, false).BuscaConta(Tarefa.ReferenteA.Id); if (canal == null || canal.Classificacao == null) { throw new ArgumentException("Conta cadastrada no campo 'Referente a' não encontrada!"); } Domain.Model.ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); Domain.Model.ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(organizationName, false).ConverterParametroParaLista(paramGlobalListaAtividades.Valor); if (lstAtividades.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(organizationName, false); novaTarefa.Assunto = atividade; Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(organizationName, false).BuscarTipoTarefa("Checklist"); if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account"); novaTarefa.ID = new Domain.Servicos.TarefaService(organizationName, false).Persistir(novaTarefa); } } } }
public DateTime?ObterValidade(CompromissosDoCanal CompromissoTarget) { if (CompromissoTarget.StatusCompromisso.Name == Enum.CompromissoCanal.StatusCompromisso.Cumprido) { if (CompromissoTarget.Compromisso != null && CompromissoTarget.Compromisso.Id != Guid.Empty) { ParametroGlobal paramGlobal = new ParametroGlobalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider) .ObterFrequenciaAtividadeChecklist(CompromissoTarget.Compromisso.Id); if (paramGlobal == null) { throw new ApplicationException("”(CRM)Não foi possível alterar o status do compromisso devido a falta do parâmetro global " + (int)Enum.TipoParametroGlobal.FrequenciaChecklist + ". Entrar em contato com o suporte"); } else { return(DateTime.Today.AddDays(paramGlobal.GetValue <int>())); } } } return(null); }
static int Main(string[] args) { try { var f = CriaArquivoStatus(); if (f == null) { Console.WriteLine("Já existe um processo em andamento."); return(0); } string organizationName = SDKore.Configuration.ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); if (args != null && args.Length > 0) { organizationName = args[0].ToString(); } var logger = new SDKore.Helper.Logger("PCI-Log de Revalidação da Adesão", false); logger.Log("Inicio do processo.", true, true); var parametroGlobalService = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false); var parametroGLobal = parametroGlobalService.ObterEmailContatosAdministrativos(); if (parametroGLobal == null || !parametroGLobal.ID.HasValue || parametroGLobal.ID.Value == Guid.Empty || string.IsNullOrEmpty(parametroGLobal.Valor)) { logger.Log("Erro: (CRM) Parametro Global Contatos Administrativos não configurado.", true, true); logger.Log("Fim do processo.", true, true); File.Delete(statusFileName); return(6666); } logger.Log("Obtendo contas participantes do programa de benefícios.", true, true); var beneficioDoCanalService = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(organizationName, false); var lstMatrizParticipante = beneficioDoCanalService.ListarContasParticipantes(); logger.Log(lstMatrizParticipante.Count.ToString() + " contas participantes do programa de benefícios.", true, true); int count = 0; foreach (var matriz in lstMatrizParticipante) { count++; logger.Log(string.Format("{0} - {1} - {2}", count, matriz.RazaoSocial, matriz.CpfCnpj), true, true); try { AtualizaStatus(f, dataInicio, count, lstMatrizParticipante.Count); beneficioDoCanalService.AdesaoAoPrograma(matriz); } catch (Exception ex) { logger.Log(string.Format("\nErro: {0}\n Stack: {1}\n", ex.Message, ex.StackTrace), true, true); } } f.Flush(); f.Close(); File.Delete(statusFileName); logger.Log("Fim do processo.", true, true); EnviaEmail(organizationName, parametroGLobal.Valor, logger.FileName); return(0); } catch (Exception ex) { string mensagem = SDKore.Helper.Error.Handler(ex); Console.WriteLine(mensagem); return(ex.GetHashCode()); } }
public void Execute(IServiceProvider serviceProvider) { lock (thisLock) { var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(null); TarefaService ServiceTarefas = new TarefaService(context.OrganizationName, context.IsExecutingOffline, service); CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service); try { trace.Trace(context.MessageName); Intelbras.CRM2013.Domain.Model.Tarefa mTarefa = null; switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: var entidade = (Entity)context.InputParameters["Target"]; mTarefa = ServiceTarefas.BuscaTarefa(entidade.Id); new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).CriarParecerParaSolicitacao(mTarefa); Guid tipoAtividadeExecucao; if (!Guid.TryParse(SDKore.Configuration.ConfigurationManager.GetSettingValue("TipoAtividadeExecucao"), out tipoAtividadeExecucao)) { throw new ArgumentException("(CRM) Faltando parâmetro TipoAtividadeExecucao no SDKore"); } trace.Trace("Parâmetro do Config: TipoAtividadeExecucao '{0}'", tipoAtividadeExecucao); if (mTarefa.ReferenteA != null && mTarefa.TipoDeAtividade != null && mTarefa.TipoDeAtividade.Id == tipoAtividadeExecucao) { trace.Trace("Tarefa do tipo Execução."); SolicitacaoBeneficio solBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor(mTarefa.ReferenteA.Id); if (solBenef == null) { throw new ArgumentException("(CRM) Solicitação não encontrada."); } if (solBenef.TipoSolicitacao != null && solBenef.AjusteSaldo.Value) { trace.Trace("Solicitação do tipo Ajuste."); Tarefa _mTarefa = new Intelbras.CRM2013.Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service); _mTarefa.ID = context.PrimaryEntityId; _mTarefa.Resultado = (int)Domain.Enum.Tarefa.Resultado.PagamentoEfetuadoPedidoGerado; _mTarefa.State = 1; string retorno; TarefaService tarefaService = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service); tarefaService.Persistir(_mTarefa, out retorno); trace.Trace(tarefaService.Trace.StringTrace.ToString()); tarefaService.Trace.Save(); } } mTarefa.TempoAtuacao = 0; break; case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { Tarefa Tarefa = context.PostEntityImages["imagem"].Parse <Tarefa>(context.OrganizationName, context.IsExecutingOffline, service); if (Tarefa.ReferenteA == null || Tarefa.State.Value != (int)Domain.Enum.Tarefa.StateCode.Fechada) { break; } if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaSolicitacaoBeneficio(Tarefa, context.UserId); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaSolicitacaoDeCadastro(Tarefa, context.UserId); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <CompromissosDoCanal>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaCompromissoCanal(Tarefa); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <Conta>().ToLower()) { if (Tarefa.TipoDeAtividade.Name.Contains("Checklist")) { #region Pendencia Key-Account comentada Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, service).BuscaConta(Tarefa.ReferenteA.Id); if (canal == null || canal.Classificacao == null) { throw new ArgumentException("(CRM) Conta cadastrada no campo 'Referente a' não encontrada!"); } ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).ConverterParametroParaLista(paramGlobalListaAtividades.Valor); if (lstAtividades.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service); Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).BuscarTipoTarefa("Checklist"); if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } novaTarefa.Assunto = atividade; novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account"); novaTarefa.ID = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).Persistir(novaTarefa); if (novaTarefa.ID.HasValue) { Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("task", "activityid", Tarefa.Id); if (proprietario != null) { new Domain.Servicos.UtilService(context.OrganizationName, context.IsExecutingOffline, service).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value); } } } } else { Domain.Model.CompromissosDoCanal CompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(Tarefa.ReferenteA.Id); if (CompromissoCanal != null && CompromissoCanal.Compromisso != null) { List <string> listaAtividadesCheckup2 = ServiceTarefas.ListarAtividadesCheckup(CompromissoCanal.Compromisso.Id); if (listaAtividadesCheckup2.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(listaAtividadesCheckup2, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", CompromissoCanal.Id); if (proprietario != null) { new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service).GerarAtividadeChecklist(atividade, CompromissoCanal, proprietario); } } } } } #endregion } } } break; } } catch (Exception ex) { string message = SDKore.Helper.Error.Handler(ex); trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); throw new InvalidPluginExecutionException(message, ex); } } }
public void EnviaRegistroSellinFieloAstec() { #region recupera parametro global de data de envio var parametroGlobal = new ParametroGlobalService(RepositoryService).ObterPor((int)TipoParametroGlobal.DataEnvioRegistroSellinFielo); if (parametroGlobal == null) { throw new ArgumentException("(CRM) Parâmetro Global(" + (int)TipoParametroGlobal.DataEnvioRegistroSellinFielo + ") não encontrado!"); } var dataConsulta = Convert.ToDateTime(parametroGlobal.Valor); #endregion try { if (dataConsulta.Date == DateTime.Now.Date) { #region Recuperar revendas a enviar. DateTime database = dataConsulta.AddMonths(-1); String dt_inicio = new DateTime(database.Year, database.Month, 1).ToString("yyyy-MM-dd HH:mm:ss"); String dt_fim = new DateTime(database.Year, database.Month, DateTime.DaysInMonth(database.Year, database.Month)).ToString("yyyy-MM-dd HH:mm:ss"); DataTable dtSellin = RepositoryService.Conta.ObterSellinAstec(dt_inicio, dt_fim); #endregion #region Montar CSV string data = DateTime.Now.ToString(); data = data.Replace("/", "-").Replace(":", "-"); string nomeArquivo = "SELLIN_" + data + ".csv"; if (dtSellin != null) { StreamWriter csvArquivo = new StreamWriter(@"c:\\temp\\" + nomeArquivo, false, Encoding.UTF8); //Preenche primeira linha da planilha com o cabeçalho const string aspas = "******""; csvArquivo.WriteLine("SellinId,IdRevendaCRM,CodigoEmitente,Emitente,CompAno,CompMes,TipoOperacao,Item,Valor"); int linha = 2; foreach (DataRow item in dtSellin.Rows) { //Adiciona linhas de Sellin da Revenda na planilha do Excell string line = aspas; line += item.Field <string>("SellinId"); line += aspas + "," + aspas; if (item.Field <string>("IdRevendaCRM") != "") { line += item.Field <string>("IdRevendaCRM"); } line += aspas + "," + aspas; line += item.Field <int>("CodigoEmitente"); line += aspas + "," + aspas; if (item.Field <string>("Emitente") != "") { line += item.Field <string>("Emitente"); } line += aspas + "," + aspas; line += item.Field <Int16>("CompAno"); line += aspas + "," + aspas; line += item.Field <byte>("CompMes"); line += aspas + "," + aspas; if (item.Field <string>("TipoOperacao") != "") { line += item.Field <string>("TipoOperacao"); } line += aspas + "," + aspas; if (item.Field <string>("Item") != "") { line += item.Field <string>("Item"); } line += aspas + "," + aspas; line += item.Field <decimal>("Valor"); line += aspas; csvArquivo.WriteLine(line); linha++; } csvArquivo.Close(); } #endregion #region Enviar para Fielo via FTP this.enviaArquivoFieloFTP(nomeArquivo); #endregion #region Atualiza data do próximo envio Sellin if (DateTime.Now.Month == 12) { parametroGlobal.Valor = DateTime.Now.Day + "/" + 01 + "/" + (DateTime.Now.Year + 1); } else { parametroGlobal.Valor = DateTime.Now.Day + "/" + (DateTime.Now.Month + 1) + "/" + DateTime.Now.Year; } RepositoryService.ParametroGlobal.Update(parametroGlobal); #endregion } } catch (Exception ex) { throw new ArgumentException("(CRM) ERRO Geração Sellin : " + ex.Message); } }
public void EnviaRegistroSellinFieloProvedoresSolucoes() { #region recupera parametro global de data de envio var parametroGlobal = new ParametroGlobalService(RepositoryService).ObterPor((int)TipoParametroGlobal.DataEnvioRegistroSellinProvedoresSolucoesFielo); if (parametroGlobal == null) { throw new ArgumentException("(CRM) Parâmetro Global(" + (int)TipoParametroGlobal.DataEnvioRegistroSellinProvedoresSolucoesFielo + ") não encontrado!"); } var dataConsulta = Convert.ToDateTime(parametroGlobal.Valor); #endregion try { if (dataConsulta.Date == DateTime.Now.Date) { #region Recuperar revendas a enviar. DateTime database = dataConsulta.AddMonths(-1); String dt_inicio = new DateTime(database.Year, database.Month, 1).ToString("yyyy-MM-dd HH:mm:ss"); String dt_fim = new DateTime(database.Year, database.Month, DateTime.DaysInMonth(database.Year, database.Month)).ToString("yyyy-MM-dd HH:mm:ss"); DataTable dtSellin = RepositoryService.Conta.ObterSellinProvedoresSolucoes(dt_inicio, dt_fim); #endregion #region Montar CSV string data = DateTime.Now.ToString(); data = data.Replace("/", "-").Replace(":", "-"); string nomeBaseArquivo = "SELLIN_PROVEDORES_SOLUCOES" + data + ".csv"; string nomeArquivo = "c:\\temp\\" + nomeBaseArquivo; if (dtSellin != null) { StringBuilder sb = new StringBuilder(); string[] columnNames = dtSellin.Columns.Cast <DataColumn>().Select(column => column.ColumnName).ToArray(); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dtSellin.Rows) { string[] fields = row.ItemArray.Select(field => field.ToString()).ToArray(); sb.AppendLine(string.Join(",", fields)); } File.WriteAllText(nomeArquivo, sb.ToString(), Encoding.UTF8); #region Enviar para Fielo via FTP //this.enviaArquivoFieloFTP(nomeBaseArquivo); // TODO: copia arquivo para uma pasta para conferencia, apos fase de teste, usar a funcao comentada a cima System.IO.File.Copy(nomeArquivo, "c:\\ArquivoSellout-PCI\\" + nomeBaseArquivo, true); #endregion } #endregion #region Atualiza data do próximo envio Sellin dataConsulta = dataConsulta.AddMonths(1); parametroGlobal.Valor = dataConsulta.GetDateTimeFormats('d')[0]; RepositoryService.ParametroGlobal.Update(parametroGlobal); #endregion } } catch (Exception ex) { throw new ArgumentException("(CRM) ERRO Geração Sellin : " + ex.Message); } }