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