コード例 #1
0
        public DataTable ListarPor(string ano, string trimestre)
        {
            string        commandIn = string.Empty;
            StringBuilder strSql    = new StringBuilder();

            strSql.Append("Select  ");
            strSql.Append("cd_canal, ");
            strSql.Append("CD_Mes, ");
            strSql.Append("cd_ano, ");
            strSql.Append("cd_item, ");
            strSql.Append("cd_trimestre, ");
            strSql.Append(" sum([NM_Vl_Liquido_Total]) Valor, ");
            strSql.Append(" sum([NM_Quantidade_Total]) Qtd ");
            strSql.Append(" From viewFaturamentoCRM ");
            strSql.AppendFormat(" Where CD_Ano = {0} ", ano);

            Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.OrganizationName, this.IsOffline);
            var parametroGlobal = RepositoryService.ParametroGlobal.ObterPorCodigoTipoParametroGlobal((int)Intelbras.CRM2013.Domain.Enum.ParametroGlobal.Parametrizar.GruposEstoqueGeracaoOrcamentosMeta);

            if (parametroGlobal == null || string.IsNullOrEmpty(parametroGlobal.Valor))
            {
                throw new ArgumentException("(CRM) Não foi encontrado Parametro Global [" + (int)Intelbras.CRM2013.Domain.Enum.ParametroGlobal.Parametrizar.GruposEstoqueGeracaoOrcamentosMeta + "].");
            }
            else
            {
                strSql.AppendFormat(" And CD_Grupo_Estoque IN ({0}) ", parametroGlobal.Valor.Replace(';', ','));
            }

            strSql.AppendFormat(" And cd_trimestre = {0} ", trimestre);
            strSql.AppendLine(" AND CD_Canal = 1 ");
            strSql.Append(" group by CD_Mes, CD_Ano, CD_Trimestre, cd_canal, cd_item ");

            return(DataBaseSqlServer.executeQuery(strSql.ToString()));
        }
コード例 #2
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService);

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:

                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    var target       = (Entity)context.InputParameters["Target"];
                    var oportunidade = target.Parse <Domain.Model.Oportunidade>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    try
                    {
                        if (oportunidade.ClientePotencialOriginador != null)
                        {
                            #region Copia Arquivos do Sharepoint
                            Domain.Model.ClientePotencial           clientePotencial = RepositoryService.ClientePotencial.Retrieve(oportunidade.ClientePotencialOriginador.Id);
                            List <Domain.Model.DocumentoSharePoint> lstDocs          = RepositoryService.DocumentoSharePoint.ListarPorIdRegistro(oportunidade.ClientePotencialOriginador.Id);
                            List <Domain.Model.Anotacao>            lstAnotacoes     = RepositoryService.Anotacao.ListarPor(oportunidade.ClientePotencialOriginador.Id);

                            foreach (var doc in lstDocs)
                            {
                                Domain.Model.DocumentoSharePoint newDoc = doc;
                                newDoc.ObjetoRelacionadoId = new SDKore.DomainModel.Lookup(oportunidade.ID.Value, "", SDKore.Crm.Util.Utility.GetEntityName(oportunidade));
                                newDoc.Id = Guid.Empty;
                                newDoc.ID = null;
                                RepositoryService.DocumentoSharePoint.Create(newDoc);
                            }

                            foreach (var anotacao in lstAnotacoes)
                            {
                                Domain.Model.Anotacao newAnotacao = anotacao;
                                newAnotacao.EntidadeRelacionada = new SDKore.DomainModel.Lookup(oportunidade.ID.Value, "", SDKore.Crm.Util.Utility.GetEntityName(oportunidade));
                                newAnotacao.Id = Guid.Empty;
                                newAnotacao.ID = null;
                                RepositoryService.Anotacao.Create(newAnotacao);
                            }
                            #endregion
                        }
                    }
                    catch (System.Exception e)
                    {
                        throw;
                    }
                }

                break;
            }
        }
コード例 #3
0
ファイル: MSG0094.cs プロジェクト: ertprs/crm_fonte
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            usuarioIntegracao = usuario;
            Pollux.MSG0094 polluxMsg0094 = this.CarregarMensagem <Pollux.MSG0094>(mensagem);

            if (!string.IsNullOrWhiteSpace(polluxMsg0094.ChaveIntegracao))
            {
                var statusFatura = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline)
                                   .Fatura.ObterPorChaveIntegracao(polluxMsg0094.ChaveIntegracao, "statecode");

                if (statusFatura != null)
                {
                    if (statusFatura.Status.Value == (int)Enum.Fatura.Status.Cancelada)
                    {
                        resultadoPersistencia.Sucesso  = true;
                        resultadoPersistencia.Mensagem = "Fatura foi ignorado para atualização, o status no CRM é Cancelada e não é feito mais modificações!";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
                    }
                }
            }

            Fatura ObjFatura = this.DefinirPropriedades(polluxMsg0094);

            this.DefinirPropriedadesProdutoFatura(polluxMsg0094, Guid.Empty);

            if (!resultadoPersistencia.Sucesso)
            {
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }

            //Para poder atualizar state posteriormente
            int? stateUpdate       = ObjFatura.Status;
            int? razaoStatusUpdate = ObjFatura.RazaoStatus;
            bool alteraStatus      = false;

            int countErrosIntegracaoItem = lstProdutoFaturaUpdate.Where(x => x.IntegradoRepresentanteComErro.Value).Count();

            if (countErrosIntegracaoItem > 0)
            {
                ObjFatura.IntegradoComErros = true;
            }

            //Persistir Fatura para obter o id que sera utilizado no ProdutoFatura
            ObjFatura = new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).Persistir(ObjFatura, ref alteraStatus);
            if (ObjFatura == null)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Erro ao persistir Fatura!";

                retorno.Add("Resultado", resultadoPersistencia);

                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }
            else

            if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null)
            {
                this.DefinirPropriedadesProdutoFatura(polluxMsg0094, ObjFatura.ID.Value);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }

            if (!resultadoPersistencia.Sucesso)
            //if (lstProdutoFaturaUpdate.Any())
            {
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
            }

            // foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
            //  {
            //bool mudarprop = false;
            //item.Fatura = new Lookup(ObjFatura.ID.Value, "");

            //if (lstProdutoFaturaUpdate == null && lstProdutoFaturaDelete == null)
            //    ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop);

            //if (ObjProdutoFatura == null)
            //{
            //retorno.Add("Resultado", resultadoPersistencia);
            //return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno);
            //    resultadoPersistencia.Sucesso = false;
            //    resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura.";
            //    retorno.Add("Resultado", resultadoPersistencia);
            //    return CriarMensagemRetorno<Pollux.MSG0094R1>(numeroMensagem, retorno);
            //}

            if (lstProdutoFaturaUpdate.Any())
            {
                foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
                {
                    bool mudarprop = false;
                    item.Fatura = new Lookup(ObjFatura.ID.Value, "");

                    ProdutoFatura ObjProdutoFatura = new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Atualizar(item, ref mudarprop);

                    if (ObjProdutoFatura == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Erro de persistência no item da fatura.";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
                    }
                }
            }
            if (lstProdutoFaturaDelete.Any())
            {
                foreach (ProdutoFatura item in lstProdutoFaturaUpdate)
                {
                    new Intelbras.CRM2013.Domain.Servicos.ProdutoFaturaService(this.Organizacao, this.IsOffline).Deletar(item);
                }
            }
            //}
            //Alterar Status da Fatura após todo processo
            if (alteraStatus)
            {
                if (ObjFatura.ID.HasValue && stateUpdate.HasValue && razaoStatusUpdate.HasValue)
                {
                    new Intelbras.CRM2013.Domain.Servicos.FaturaService(this.Organizacao, this.IsOffline).MudarStatus(ObjFatura.ID.Value, stateUpdate.Value, razaoStatusUpdate.Value);
                }
            }

            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso";
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0094R1>(numeroMensagem, retorno));
        }
コード例 #4
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
                #region Create

            case Domain.Enum.Plugin.MessageName.Create:

                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    var           entidade      = (Entity)context.InputParameters["Target"];
                    Conta         conta         = entidade.Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    Classificacao classificacao = new Intelbras.CRM2013.Domain.Servicos.ClassificacaoService(context.OrganizationName, context.IsExecutingOffline, adminService).BuscaClassificacao(conta.Classificacao.Id);

                    //Se estiver fazendo adesão e o proprietário for um systemuser, cria equipe

                    // Executa somente se for participante do programa
                    if (conta.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
                    {
                        //Adesao ao Programa
                        new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).AdesaoAoPrograma(conta);

                        //Integração com CRM 4.0
                        //new Intelbras.CRM2013.Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoCRM4(conta);
                    }

                    #region SellOut


                    if (conta.Classificacao != null && conta.Classificacao.Name != null)
                    {
                        String resultString = null;
                        //Verifica se a conta é distribuidor ou revenda
                        switch (conta.Classificacao.Name)
                        {
                        case Domain.Enum.Conta.Classificacao.Dist_BoxMover:
                        case Domain.Enum.Conta.Classificacao.Dist_VAD:

                            resultString =
                                new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(conta, context);

                            if (!string.IsNullOrEmpty(resultString))
                            {
                                throw new ArgumentException("(CRM) " + resultString);
                            }
                            break;

                        case Domain.Enum.Conta.Classificacao.Atac_Dist:
                            if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == conta.Subclassificacao.Name)
                            {
                                if (Domain.Enum.Conta.CategoriaConta.Completo == conta.Categoria.Name)
                                {
                                    resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(conta, context);
                                    if (!string.IsNullOrEmpty(resultString))
                                    {
                                        throw new ArgumentException("(CRM) " + resultString);
                                    }
                                }
                            }
                            break;
                        }
                    }

                    #endregion

                    if (!conta.IntegrarNoPlugin || conta.IntegrarNoPlugin == null || conta.IntegrarNoPlugin.ToString().Equals(""))
                    {
                        new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService).IntegracaoBarramento(conta, ref entidade);
                    }

                    new Intelbras.CRM2013.Domain.Servicos.EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).AtualizaEnderecosAdicionaisDaConta(conta);
                }

                break;

                #endregion

                #region Update

            case Domain.Enum.Plugin.MessageName.Update:
                if (context.PostEntityImages.Contains("imagem") &&
                    context.PostEntityImages["imagem"] is Entity &&
                    context.PreEntityImages.Contains("imagem") &&
                    context.PreEntityImages["imagem"] is Entity)
                {
                    var           CanalPre          = ((Entity)context.PreEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var           CanalPost         = ((Entity)context.PostEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    Classificacao NomeClassificacao = new Intelbras.CRM2013.Domain.Servicos.ClassificacaoService(context.OrganizationName, context.IsExecutingOffline, adminService).BuscaClassificacao(CanalPost.Classificacao.Id);
                    // Valida ALteração do Atributo Forma de apuração dos Benefícios
                    if (CanalPre.ApuracaoBeneficiosCompromissos != CanalPost.ApuracaoBeneficiosCompromissos)
                    {
                        new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService).ValidaCanalApuracaoDeBeneficios(CanalPre, CanalPost);
                    }

                    #region Historico Categorias Conta
                    if (CanalPost.Categoria != null && CanalPre.Categoria != null)
                    {
                        if (CanalPre.Categoria.Id != CanalPost.Categoria.Id)
                        {
                            Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService);

                            var categoriaAtual    = RepositoryService.Categoria.Retrieve(CanalPost.Categoria.Id);
                            var categoriaAnterior = RepositoryService.Categoria.Retrieve(CanalPre.Categoria.Id);

                            var historicoCategoria = new HistoricoCategoria(context.OrganizationName, context.IsExecutingOffline, adminService);
                            historicoCategoria.Conta             = new SDKore.DomainModel.Lookup(CanalPost.ID.Value, CanalPost.RazaoSocial, SDKore.Crm.Util.Utility.GetEntityName(CanalPost));
                            historicoCategoria.CategoriaAnterior = new SDKore.DomainModel.Lookup(categoriaAnterior.ID.Value, categoriaAnterior.Nome, SDKore.Crm.Util.Utility.GetEntityName(categoriaAnterior));
                            historicoCategoria.CategoriaAtual    = new SDKore.DomainModel.Lookup(categoriaAtual.ID.Value, categoriaAtual.Nome, SDKore.Crm.Util.Utility.GetEntityName(categoriaAtual));
                            historicoCategoria.DataCriacao       = DateTime.Now;

                            RepositoryService.HistoricoCategoria.Create(historicoCategoria);
                        }
                    }
                    #endregion

                    #region SellOut

                    if (CanalPost.Classificacao != null && CanalPost.Classificacao.Name != null)
                    {
                        if (!String.IsNullOrEmpty(CanalPost.CodigoMatriz) && !String.IsNullOrEmpty(CanalPost.CpfCnpj))
                        {
                            //Verifica se a conta é distribuidor ou revenda
                            String resultString = null;
                            switch (CanalPost.Classificacao.Name)
                            {
                            case Domain.Enum.Conta.Classificacao.Dist_BoxMover:
                            case Domain.Enum.Conta.Classificacao.Dist_VAD:
                                resultString =
                                    new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context);
                                if (!string.IsNullOrEmpty(resultString))
                                {
                                    throw new ArgumentException("(CRM) " + resultString);
                                }
                                break;

                            case Domain.Enum.Conta.Classificacao.Atac_Dist:
                                if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == CanalPost.Subclassificacao.Name)
                                {
                                    if (Domain.Enum.Conta.CategoriaConta.Completo == CanalPost.Categoria.Name)
                                    {
                                        resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context);
                                        if (!string.IsNullOrEmpty(resultString))
                                        {
                                            throw new ArgumentException("(CRM) " + resultString);
                                        }
                                    }
                                }
                                break;
                            }
                        }
                    }
                    #endregion
                }

                break;

                #endregion

                #region SetStateDynamicEntity

            case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                if (context.PostEntityImages.Contains("imagem") &&
                    context.PostEntityImages["imagem"] is Entity &&
                    context.PreEntityImages.Contains("imagem") &&
                    context.PreEntityImages["imagem"] is Entity)
                {
                    var CanalPre  = ((Entity)context.PreEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var CanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    #region sellout

                    if (CanalPost.Classificacao != null && CanalPost.Classificacao.Name != null)
                    {
                        if (!String.IsNullOrEmpty(CanalPost.CodigoMatriz) && !String.IsNullOrEmpty(CanalPost.CpfCnpj))
                        {
                            String resultString = null;
                            //Verifica se a conta é distribuidor ou Atacado
                            switch (CanalPost.Classificacao.Name)
                            {
                            case Domain.Enum.Conta.Classificacao.Dist_BoxMover:
                            case Domain.Enum.Conta.Classificacao.Dist_VAD:
                                resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context);
                                if (!string.IsNullOrEmpty(resultString))
                                {
                                    throw new ArgumentException("(CRM) " + resultString);
                                }
                                break;

                            case Domain.Enum.Conta.Classificacao.Atac_Dist:
                                if (Domain.Enum.Conta.SubClassificacao.Atac_Distribuidor == CanalPost.Subclassificacao.Name)
                                {
                                    if (Domain.Enum.Conta.CategoriaConta.Completo == CanalPost.Categoria.Name)
                                    {
                                        resultString = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).PersistirDistribuidor(CanalPost, context);
                                        if (!string.IsNullOrEmpty(resultString))
                                        {
                                            throw new ArgumentException("(CRM) " + resultString);
                                        }
                                    }
                                }
                                break;
                            }
                        }
                    }

                    #endregion
                }
                break;
                #endregion
            }
        }
コード例 #5
0
ファイル: MSG0028.cs プロジェクト: ertprs/crm_fonte
        public FamiliaProduto DefinirPropriedades(Intelbras.Message.Helper.MSG0028 xml)
        {
            var crm = new FamiliaProduto(this.Organizacao, this.IsOffline);

            FamiliaProduto familiaProduto = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline).FamiliaProduto.ObterPor(xml.CodigoFamilia);

            if (familiaProduto != null)
            {
                crm.DescontoVerdeHabilitado = familiaProduto.DescontoVerdeHabilitado;
            }

            #region Propriedades Crm->Xml

            if (!String.IsNullOrEmpty(xml.Nome))
            {
                crm.Nome = xml.Nome;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "(Nome não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoFamilia))
            {
                crm.Codigo = xml.CodigoFamilia;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "(Código Família não enviado.";
                return(crm);
            }

            crm.Status = xml.Situacao;
            //Segmento
            if (!String.IsNullOrEmpty(xml.Segmento))
            {
                Model.Segmento segmento = new Model.Segmento(this.Organizacao, this.IsOffline);
                segmento = new Intelbras.CRM2013.Domain.Servicos.SegmentoService(this.Organizacao, this.IsOffline).BuscaSegmento(xml.Segmento);

                if (segmento != null && segmento.ID.HasValue)
                {
                    crm.Segmento = new Lookup(segmento.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Segmento não encontrado!";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Segmento não enviado.";
                return(crm);
            }

            crm.IntegradoEm       = DateTime.Now;
            crm.IntegradoPor      = usuarioIntegracao.NomeCompleto;
            crm.UsuarioIntegracao = xml.LoginUsuario;

            #endregion

            return(crm);
        }