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); } }
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); } } } } }